ZQuest Classic Coverage Report


Directory: src/
File: src/zq/zq_custom.cpp
Date: 2024-08-15 07:17:26
Exec Total Coverage
Lines: 836 3862 21.6%
Functions: 3 80 3.8%
Branches: 60 2127 2.8%

Line Branch Exec Source
1 #include <map>
2 #include <cstring>
3 #include <stdio.h>
4 #include <cstring>
5
6 #include "base/files.h"
7 #include "base/qrs.h"
8 #include "base/packfile.h"
9 #include "base/gui.h"
10 #include "qst.h"
11 #include "zc/zc_custom.h"
12 #include "zq/zq_custom.h"
13 #include "tiles.h"
14 #include "zq/zq_tiles.h"
15 #include "zq/zq_misc.h"
16 #include "zq/zquest.h"
17 #include "items.h"
18 #include "base/zsys.h"
19 #include "sfx.h"
20 #include "init.h"
21 #include "defdata.h"
22 #include "zc/ffscript.h"
23 #include "dialog/itemeditor.h"
24 #include "dialog/misc_sfx.h"
25 #include "dialog/misc_sprs.h"
26 #include "dialog/info.h"
27 #include "dialog/spritedata.h"
28 #include "dialog/info_lister.h"
29 #include "zinfo.h"
30 extern FFScript FFCore;
31
32 extern int32_t ex;
33 extern void reset_itembuf(itemdata *item, int32_t id);
34 extern const char *sfxlist(int32_t index, int32_t *list_size);
35 // zq_subscr.cpp
36 extern int32_t sstype_drop_proc(int32_t msg,DIALOG *d,int32_t c);
37
38 extern int32_t biw_cnt;
39
40 extern ZModule zcm;
41 extern zcmodule moduledata;
42
43
44 #ifdef _MSC_VER
45 #define stricmp _stricmp
46 #endif
47
48
49 int32_t hero_animation_speed = 1; //lower is faster animation
50
51 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c);
52
53 int32_t d_cstile_proc(int32_t msg,DIALOG *d,int32_t c)
54 {
55 //these are here to bypass compiler warnings about unused arguments
56 c=c;
57
58 switch(msg)
59 {
60 case MSG_CLICK:
61 {
62 int32_t f = 0;
63 int32_t t = d->d1;
64 int32_t cs = d->d2;
65
66 if((CHECK_CTRL_CMD)
67 ? select_tile_2(t,f,1,cs,true)
68 : select_tile(t,f,1,cs,true))
69 {
70 d->d1 = t;
71 d->d2 = cs;
72 return D_REDRAW;
73 }
74 }
75 break;
76
77 case MSG_DRAW:
78 d->w = 36;
79 d->h = 36;
80
81 BITMAP *buf = create_bitmap_ex(8,20,20);
82 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
83
84 if(buf && bigbmp)
85 {
86 clear_bitmap(buf);
87
88 if(d->d1)
89 overtile16(buf,d->d1,2,2,d->d2,0);
90
91 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-2, d->h-2);
92 destroy_bitmap(buf);
93 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
94 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
95 destroy_bitmap(bigbmp);
96 }
97
98 // text_mode(d->bg);
99 FONT *fonty = font;
100 textprintf_ex(screen,fonty,d->x+d->w,d->y+2,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"Tile: %d",d->d1);
101 textprintf_ex(screen,fonty,d->x+d->w,d->y+text_height(fonty)+3,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"CSet: %d",d->d2);
102 break;
103 }
104
105 return D_O_K;
106 }
107
108 4 void large_dialog(DIALOG *d)
109 {
110 4 large_dialog(d, 1.5f);
111 4 }
112
113 4 void large_dialog(DIALOG *d, float RESIZE_AMT)
114 {
115
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 if(d[0].d1 == 0)
116 {
117 4 d[0].d1 = 1;
118 4 int32_t oldwidth = d[0].w;
119 4 int32_t oldheight = d[0].h;
120 4 int32_t oldx = d[0].x;
121 4 int32_t oldy = d[0].y;
122 4 d[0].x -= int32_t(float(d[0].w)/RESIZE_AMT);
123 4 d[0].y -= int32_t(float(d[0].h)/RESIZE_AMT);
124 4 d[0].w = int32_t(float(d[0].w)*RESIZE_AMT);
125 4 d[0].h = int32_t(float(d[0].h)*RESIZE_AMT);
126
127
2/2
✓ Branch 0 taken 204 times.
✓ Branch 1 taken 4 times.
208 for(int32_t i=1; d[i].proc!=NULL; i++)
128 {
129 // Place elements horizontally
130 204 double xpc = ((double)(d[i].x - oldx) / (double)oldwidth);
131 204 d[i].x = int32_t(d[0].x + (xpc*double(d[0].w)));
132
133 // Horizontally resize elements
134
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
135 {
136 d[i].x += (int32_t)(float(d[i].w)/4.f);
137 }
138
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
204 else if(d[i].proc == d_comboframe_proc)
139 {
140 d[i].w *= 2;
141 d[i].w -= 4;
142 }
143
3/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 204 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 204 times.
204 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
144 {
145 d[i].w *= 2;
146 }
147
3/4
✓ Branch 0 taken 132 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 132 times.
204 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
148 72 d[i].w = int32_t(d[i].w*1.5);
149 132 else d[i].w = int32_t(float(d[i].w)*RESIZE_AMT);
150
151 // Place elements vertically
152 204 double ypc = ((double)(d[i].y - oldy) / (double)oldheight);
153 204 d[i].y = int32_t(d[0].y + (ypc*double(d[0].h)));
154
155 // Vertically resize elements
156
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
157 {
158 }
159
4/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
204 else if(d[i].proc == jwin_edit_proc || d[i].proc == jwin_check_proc || d[i].proc == jwin_checkfont_proc)
160 {
161 8 d[i].h = int32_t((double)d[i].h*1.5);
162 8 }
163
5/10
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 196 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 196 times.
392 else if(d[i].proc == jwin_droplist_proc || d[i].proc == d_ndroplist_proc || d[i].proc == d_idroplist_proc || d[i].proc == d_nidroplist_proc || d[i].proc == d_dropdmaplist_proc
164
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
196 || d[i].proc == jwin_as_droplist_proc || d[i].proc == d_ffcombolist_proc || d[i].proc == sstype_drop_proc
165
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 || d[i].proc == d_comboalist_proc)
166 {
167 d[i].y += int32_t((double)d[i].h*0.25);
168 d[i].h = int32_t((double)d[i].h*1.25);
169 }
170
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == d_comboframe_proc)
171 {
172 d[i].h *= 2;
173 d[i].h -= 4;
174 }
175
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
196 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
176 {
177 d[i].h *= 2;
178 }
179
3/4
✓ Branch 0 taken 124 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 124 times.
196 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
180 72 d[i].h = int32_t(d[i].h*1.5);
181 124 else d[i].h = int32_t(float(d[i].h)*RESIZE_AMT);
182
183 // Fix frames
184
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc == jwin_frame_proc)
185 {
186 d[i].x++;
187 d[i].y++;
188 d[i].w-=4;
189 d[i].h-=4;
190 }
191 204 }
192 4 }
193
194
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 204 times.
208 for(int32_t i=1; d[i].proc != NULL; i++)
195 {
196
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc==jwin_slider_proc)
197 continue;
198
199 // Bigger font
200
5/8
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✓ Branch 3 taken 104 times.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
304 bool bigfontproc = (d[i].proc != jwin_droplist_proc && d[i].proc != jwin_abclist_proc && d[i].proc != d_wlist_proc && d[i].proc != jwin_list_proc && d[i].proc != d_dmaplist_proc
201
5/10
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 && d[i].proc != d_dropdmaplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_wclist_proc && d[i].proc != d_ndroplist_proc
202
6/12
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
100 && d[i].proc != d_idroplist_proc && d[i].proc != d_nidroplist_proc && d[i].proc != jwin_as_droplist_proc && d[i].proc != d_ffcombolist_proc && d[i].proc != d_enelist_proc && d[i].proc != sstype_drop_proc
203
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 100 times.
100 && d[i].proc != d_comboalist_proc);
204
205
3/4
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 104 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100 times.
204 if(bigfontproc && !d[i].dp2)
206 {
207 100 d[i].dp2 = get_zc_font(font_lfont_l);
208 100 }
209
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 104 times.
104 else if(!bigfontproc)
210 {
211 104 ((ListData *) d[i].dp)->font = &a4fonts[font_lfont_l];
212 104 }
213
214 // Make checkboxes work
215
2/2
✓ Branch 0 taken 196 times.
✓ Branch 1 taken 8 times.
204 if(d[i].proc == jwin_check_proc)
216 8 d[i].proc = jwin_checkfont_proc;
217
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == jwin_radio_proc)
218 d[i].proc = jwin_radiofont_proc;
219 204 }
220
221 4 jwin_center_dialog(d);
222 4 }
223
224 9 static ListData weapon_list(weaponlist_num, &a4fonts[font_pfont]);
225
226 const char *defenselist(int32_t index, int32_t *list_size)
227 {
228 if(index>=0)
229 {
230 bound(index,0,edLAST-1);
231
232 switch(index)
233 {
234 case 0:
235 return "(None)";
236
237 case edHALFDAMAGE:
238 return "1/2 Damage";
239
240 case edQUARTDAMAGE:
241 return "1/4 Damage";
242
243
244 case edSTUNONLY:
245 return "Stun";
246
247 case edSTUNORCHINK:
248 return "Stun Or Block";
249
250 case edSTUNORIGNORE:
251 return "Stun Or Ignore";
252
253 case edCHINKL1:
254 return "Block If < 1";
255
256 case edCHINKL2:
257 return "Block If < 2";
258
259 case edCHINKL4:
260 return "Block If < 4";
261
262 case edCHINKL6:
263 return "Block If < 6";
264
265 case edCHINKL8:
266 return "Block If < 8";
267
268
269
270 case edCHINK:
271 return "Block";
272
273 case edIGNOREL1:
274 return "Ignore If < 1";
275
276 case edIGNORE:
277 return "Ignore";
278
279
280
281
282 case ed1HKO:
283 return "One-Hit-Kill";
284
285 case edCHINKL10: //If damage is less than 10
286 return "Block if Power < 10";
287
288 case ed2x: //Double damage
289 return "Double Damage";
290 case ed3x: //Triple Damage
291 return "Triple Damage";
292 case ed4x: //4x damage
293 return "Quadruple Damage";
294
295 case edHEAL: //recover the weapon damage in HP
296 return "Enemy Gains HP = Damage";
297
298 case edTRIGGERSECRETS: //Triggers screen secrets.
299 return "Trigger Screen Secrets";
300
301 case edSPLIT:
302 return "Split";
303 case edREPLACE:
304 return "Transform";
305
306 case edSUMMON:
307 return "Summon";
308
309 case edEXPLODESMALL:
310 return "Bomb Explosion";
311
312 case edEXPLODELARGE:
313 return "Superbomb Explosion";
314
315 case edEXPLODEHARMLESS:
316 return "Harmless Explosion";
317
318 case edFREEZE: //Hit by ice..
319 return "Freeze Solid";
320
321 case edSWITCH:
322 return "Switch w/ Player";
323 default:
324 return "[reserved]";
325 }
326 }
327
328 *list_size = edLAST;
329 return NULL;
330 }
331
332 9 static ListData defense_list(defenselist, &font);
333
334 const char *itemscriptdroplist(int32_t index, int32_t *list_size)
335 {
336 if(index<0)
337 {
338 *list_size = biitems_cnt;
339 return NULL;
340 }
341
342 return biitems[index].first.c_str();
343 }
344
345 9 ListData itemscript_list(itemscriptdroplist, &a4fonts[font_pfont]);
346
347 const char *itemspritescriptdroplist(int32_t index, int32_t *list_size)
348 {
349 if(index<0)
350 {
351 *list_size = biitemsprites_cnt;
352 return NULL;
353 }
354
355 return biditemsprites[index].first.c_str();
356 }
357
358 9 ListData itemspritescript_list(itemspritescriptdroplist, &a4fonts[font_pfont]);
359
360 const char *lweaponscriptdroplist(int32_t index, int32_t *list_size)
361 {
362 if(index<0)
363 {
364 *list_size = bilweapons_cnt;
365 return NULL;
366 }
367
368 return bilweapons[index].first.c_str();
369 }
370
371 9 ListData lweaponscript_list(lweaponscriptdroplist, &a4fonts[font_pfont]);
372
373 void edit_itemdata(int32_t index)
374 {
375 call_item_editor(index);
376 }
377
378 int32_t readoneitem(PACKFILE *f, int32_t index)
379 {
380 dword section_version = 0;
381 dword section_cversion = 0;
382 int32_t zversion = 0;
383 int32_t zbuild = 0;
384 itemdata tempitem;
385 memset(&tempitem, 0, sizeof(itemdata));
386 //reset_itembuf(&tempitem,i);
387
388
389 char istring[64]={0};
390 //section version info
391 if(!p_igetl(&zversion,f))
392 {
393 return 0;
394 }
395 if(!p_igetl(&zbuild,f))
396 {
397 return 0;
398 }
399
400 if(!p_igetw(&section_version,f))
401 {
402 return 0;
403 }
404
405 if(!p_igetw(&section_cversion,f))
406 {
407 return 0;
408 }
409 al_trace("readoneitem section_version: %d\n", section_version);
410 al_trace("readoneitem section_cversion: %d\n", section_cversion);
411
412 if ( zversion > ZELDA_VERSION )
413 {
414 al_trace("Cannot read .zitem packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
415 return 0;
416 }
417 else if ( ( section_version > V_ITEMS ) || ( section_version == V_ITEMS && section_cversion < CV_ITEMS ) )
418 {
419 al_trace("Cannot read .zitem packfile made using V_ITEMS (%d) subversion (%d)\n", section_version, section_cversion);
420 return 0;
421
422 }
423 else
424 {
425 al_trace("Reading a .zitem packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
426 }
427
428 if(!pfread(&istring, 64, f))
429 {
430 return 0;
431 }
432
433 if(!p_igetl(&tempitem.tile,f))
434 {
435 return 0;
436 }
437
438 if(!p_getc(&tempitem.misc_flags,f))
439 {
440 return 0;
441 }
442
443 if(!p_getc(&tempitem.csets,f))
444 {
445 return 0;
446 }
447
448 if(!p_getc(&tempitem.frames,f))
449 {
450 return 0;
451 }
452
453 if(!p_getc(&tempitem.speed,f))
454 {
455 return 0;
456 }
457
458 if(!p_getc(&tempitem.delay,f))
459 {
460 return 0;
461 }
462
463 if(!p_igetl(&tempitem.ltm,f))
464 {
465 return 0;
466 }
467
468 if(!p_igetl(&tempitem.family,f))
469 {
470 return 0;
471 }
472
473 if(!p_getc(&tempitem.fam_type,f))
474 {
475 return 0;
476 }
477
478 if(!p_igetl(&tempitem.power,f))
479 {
480 return 0;
481 }
482
483 if(!p_igetl(&tempitem.flags,f))
484 {
485 return 0;
486 }
487
488 if(!p_igetw(&tempitem.script,f))
489 {
490 return 0;
491 }
492
493 if(!p_getc(&tempitem.count,f))
494 {
495 return 0;
496 }
497
498 if(!p_igetw(&tempitem.amount,f))
499 {
500 return 0;
501 }
502
503 if(!p_igetw(&tempitem.collect_script,f))
504 {
505 return 0;
506 }
507
508 if(!p_igetw(&tempitem.setmax,f))
509 {
510 return 0;
511 }
512
513 if(!p_igetw(&tempitem.max,f))
514 {
515 return 0;
516 }
517
518 if(!p_getc(&tempitem.playsound,f))
519 {
520 return 0;
521 }
522
523 for(int32_t j=0; j<8; j++)
524 {
525 if(!p_igetl(&tempitem.initiald[j],f))
526 {
527 return 0;
528 }
529 }
530
531 for(int32_t j=0; j<2; j++)
532 {
533 if(!p_getc(&tempitem.initiala[j],f))
534 {
535 return 0;
536 }
537 }
538
539 if(!p_getc(&tempitem.wpn,f))
540 {
541 return 0;
542 }
543
544 if(!p_getc(&tempitem.wpn2,f))
545 {
546 return 0;
547 }
548
549 if(!p_getc(&tempitem.wpn3,f))
550 {
551 return 0;
552 }
553
554 if(!p_getc(&tempitem.wpn4,f))
555 {
556 return 0;
557 }
558
559 if(!p_getc(&tempitem.wpn5,f))
560 {
561 return 0;
562 }
563
564 if(!p_getc(&tempitem.wpn6,f))
565 {
566 return 0;
567 }
568
569 if(!p_getc(&tempitem.wpn7,f))
570 {
571 return 0;
572 }
573
574 if(!p_getc(&tempitem.wpn8,f))
575 {
576 return 0;
577 }
578
579 if(!p_getc(&tempitem.wpn9,f))
580 {
581 return 0;
582 }
583
584 if(!p_getc(&tempitem.wpn10,f))
585 {
586 return 0;
587 }
588
589 if(!p_getc(&tempitem.pickup_hearts,f))
590 {
591 return 0;
592 }
593
594 if(!p_igetl(&tempitem.misc1,f))
595 {
596 return 0;
597 }
598
599 if(!p_igetl(&tempitem.misc2,f))
600 {
601 return 0;
602 }
603
604 if(section_version < 53)
605 {
606 byte tempbyte;
607 if(!p_getc(&tempbyte,f))
608 {
609 return 0;
610 }
611 tempitem.cost_amount[0] = tempbyte;
612 switch(tempitem.family)
613 {
614 case itype_arrow:
615 case itype_bomb:
616 case itype_sbomb:
617 tempitem.cost_amount[1] = 1;
618 break;
619 default:
620 tempitem.cost_amount[1] = 0;
621 }
622 }
623 else
624 {
625 for(auto q = 0; q < 2; ++q)
626 {
627 if(!p_igetw(&tempitem.cost_amount[q],f))
628 {
629 return 0;
630 }
631 }
632 }
633
634 if(!p_igetl(&tempitem.misc3,f))
635 {
636 return 0;
637 }
638
639 if(!p_igetl(&tempitem.misc4,f))
640 {
641 return 0;
642 }
643
644 if(!p_igetl(&tempitem.misc5,f))
645 {
646 return 0;
647 }
648
649 if(!p_igetl(&tempitem.misc6,f))
650 {
651 return 0;
652 }
653
654 if(!p_igetl(&tempitem.misc7,f))
655 {
656 return 0;
657 }
658
659 if(!p_igetl(&tempitem.misc8,f))
660 {
661 return 0;
662 }
663
664 if(!p_igetl(&tempitem.misc9,f))
665 {
666 return 0;
667 }
668
669 if(!p_igetl(&tempitem.misc10,f))
670 {
671 return 0;
672 }
673
674 if(!p_getc(&tempitem.usesound,f))
675 {
676 return 0;
677 }
678
679 if(!p_getc(&tempitem.usesound2,f))
680 {
681 return 0;
682 }
683
684 if ( zversion >= 0x255 )
685 {
686 if ( section_version >= 45 )
687 {
688 //New itemdata vars -Z
689 //! version 27
690
691 if(!p_getc(&tempitem.useweapon,f))
692 {
693 return 0;
694 }
695 if(!p_getc(&tempitem.usedefence,f))
696 {
697 return 0;
698 }
699 if(!p_igetl(&tempitem.weaprange,f))
700 {
701 return 0;
702 }
703 if(!p_igetl(&tempitem.weapduration,f))
704 {
705 return 0;
706 }
707 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
708 if(!p_igetl(&tempitem.weap_pattern[q],f))
709 {
710 return 0;
711 }
712 }
713 //version 28
714 if(!p_igetl(&tempitem.duplicates,f))
715 {
716 return 0;
717 }
718 for ( int32_t q = 0; q < INITIAL_D; q++ )
719 {
720 if(!p_igetl(&tempitem.weap_initiald[q],f))
721 {
722 return 0;
723 }
724 }
725 for ( int32_t q = 0; q < INITIAL_A; q++ )
726 {
727 if(!p_getc(&tempitem.weap_initiala[q],f))
728 {
729 return 0;
730 }
731 }
732
733 if(!p_getc(&tempitem.drawlayer,f))
734 {
735 return 0;
736 }
737
738
739 if(!p_igetl(&tempitem.hxofs,f))
740 {
741 return 0;
742 }
743 if(!p_igetl(&tempitem.hyofs,f))
744 {
745 return 0;
746 }
747 if(!p_igetl(&tempitem.hxsz,f))
748 {
749 return 0;
750 }
751 if(!p_igetl(&tempitem.hysz,f))
752 {
753 return 0;
754 }
755 if(!p_igetl(&tempitem.hzsz,f))
756 {
757 return 0;
758 }
759 if(!p_igetl(&tempitem.xofs,f))
760 {
761 return 0;
762 }
763 if(!p_igetl(&tempitem.yofs,f))
764 {
765 return 0;
766 }
767 if(!p_igetl(&tempitem.weap_hxofs,f))
768 {
769 return 0;
770 }
771 if(!p_igetl(&tempitem.weap_hyofs,f))
772 {
773 return 0;
774 }
775 if(!p_igetl(&tempitem.weap_hxsz,f))
776 {
777 return 0;
778 }
779 if(!p_igetl(&tempitem.weap_hysz,f))
780 {
781 return 0;
782 }
783 if(!p_igetl(&tempitem.weap_hzsz,f))
784 {
785 return 0;
786 }
787 if(!p_igetl(&tempitem.weap_xofs,f))
788 {
789 return 0;
790 }
791 if(!p_igetl(&tempitem.weap_yofs,f))
792 {
793 return 0;
794 }
795 if(!p_igetw(&tempitem.weaponscript,f))
796 {
797 return 0;
798 }
799 if(!p_igetl(&tempitem.wpnsprite,f))
800 {
801 return 0;
802 }
803 size_t num_cost_tmr = (section_version > 52 ? 2 : 1);
804 for(size_t q = 0; q < num_cost_tmr; ++q)
805 {
806 if(!p_igetl(&tempitem.magiccosttimer[q],f))
807 {
808 return 0;
809 }
810 }
811 if(!p_igetl(&tempitem.overrideFLAGS,f))
812 {
813 return 0;
814 }
815 if(!p_igetl(&tempitem.tilew,f))
816 {
817 return 0;
818 }
819 if(!p_igetl(&tempitem.tileh,f))
820 {
821 return 0;
822 }
823 if(!p_igetl(&tempitem.weapoverrideFLAGS,f))
824 {
825 return 0;
826 }
827 if(!p_igetl(&tempitem.weap_tilew,f))
828 {
829 return 0;
830 }
831 if(!p_igetl(&tempitem.weap_tileh,f))
832 {
833 return 0;
834 }
835 if(!p_igetl(&tempitem.pickup,f))
836 {
837 return 0;
838 }
839 if(!p_igetw(&tempitem.pstring,f))
840 {
841 return 0;
842 }
843 if(!p_igetw(&tempitem.pickup_string_flags,f))
844 {
845 return 0;
846 }
847
848 size_t num_cost_ctr = (section_version > 52 ? 2 : 1);
849 for(size_t q = 0; q < num_cost_ctr; ++q)
850 {
851 if(!p_getc(&tempitem.cost_counter[q],f))
852 {
853 return 0;
854 }
855 }
856
857 //InitD[] labels
858 for ( int32_t q = 0; q < 8; q++ )
859 {
860 for ( int32_t w = 0; w < 65; w++ )
861 {
862 if(!p_getc(&tempitem.initD_label[q][w],f))
863 {
864 return 0;
865 }
866 }
867 for ( int32_t w = 0; w < 65; w++ )
868 {
869 if(!p_getc(&tempitem.weapon_initD_label[q][w],f))
870 {
871 return 0;
872 }
873 }
874 for ( int32_t w = 0; w < 65; w++ )
875 {
876 if(!p_getc(&tempitem.sprite_initD_label[q][w],f))
877 {
878 return 0;
879 }
880 }
881 if(!p_igetl(&tempitem.sprite_initiald[q],f))
882 {
883 return 0;
884 }
885 }
886 for ( int32_t q = 0; q < 2; q++ )
887 {
888 if(!p_getc(&tempitem.sprite_initiala[q],f))
889 {
890 return 0;
891 }
892
893 }
894 if(!p_igetw(&tempitem.sprite_script,f))
895 {
896 return 0;
897 }
898
899 if ( section_version >= 47 )
900 {
901 if(!p_getc(&tempitem.pickupflag,f))
902 {
903 return 0;
904 }
905 }
906 //read it into an item
907 }
908 }
909 itemsbuf[index] = tempitem;
910 strcpy(item_string[index], istring);
911
912 return 1;
913 }
914
915 int32_t writeoneitem(PACKFILE *f, int32_t i)
916 {
917
918 dword section_version=V_ITEMS;
919 dword section_cversion=CV_ITEMS;
920 int32_t zversion = ZELDA_VERSION;
921 int32_t zbuild = VERSION_BUILD;
922
923
924 //section version info
925 if(!p_iputl(zversion,f))
926 {
927 return 0;
928 }
929 if(!p_iputl(zbuild,f))
930 {
931 return 0;
932 }
933 if(!p_iputw(section_version,f))
934 {
935 new_return(2);
936 }
937
938 if(!p_iputw(section_cversion,f))
939 {
940 new_return(3);
941 }
942
943
944
945 //section data
946
947 if(!pfwrite(item_string[i], 64, f))
948 {
949 new_return(5);
950 }
951
952 if(!p_iputl(itemsbuf[i].tile,f))
953 {
954 new_return(6);
955 }
956
957 if(!p_putc(itemsbuf[i].misc_flags,f))
958 {
959 new_return(7);
960 }
961
962 if(!p_putc(itemsbuf[i].csets,f))
963 {
964 new_return(8);
965 }
966
967 if(!p_putc(itemsbuf[i].frames,f))
968 {
969 new_return(9);
970 }
971
972 if(!p_putc(itemsbuf[i].speed,f))
973 {
974 new_return(10);
975 }
976
977 if(!p_putc(itemsbuf[i].delay,f))
978 {
979 new_return(11);
980 }
981
982 if(!p_iputl(itemsbuf[i].ltm,f))
983 {
984 new_return(12);
985 }
986
987 if(!p_iputl(itemsbuf[i].family,f))
988 {
989 new_return(13);
990 }
991
992 if(!p_putc(itemsbuf[i].fam_type,f))
993 {
994 new_return(14);
995 }
996
997 if(!p_iputl(itemsbuf[i].power,f))
998 {
999 new_return(14);
1000 }
1001
1002 if(!p_iputl(itemsbuf[i].flags,f))
1003 {
1004 new_return(15);
1005 }
1006
1007 if(!p_iputw(itemsbuf[i].script,f))
1008 {
1009 new_return(16);
1010 }
1011
1012 if(!p_putc(itemsbuf[i].count,f))
1013 {
1014 new_return(17);
1015 }
1016
1017 if(!p_iputw(itemsbuf[i].amount,f))
1018 {
1019 new_return(18);
1020 }
1021
1022 if(!p_iputw(itemsbuf[i].collect_script,f))
1023 {
1024 new_return(19);
1025 }
1026
1027 if(!p_iputw(itemsbuf[i].setmax,f))
1028 {
1029 new_return(21);
1030 }
1031
1032 if(!p_iputw(itemsbuf[i].max,f))
1033 {
1034 new_return(22);
1035 }
1036
1037 if(!p_putc(itemsbuf[i].playsound,f))
1038 {
1039 new_return(23);
1040 }
1041
1042 for(int32_t j=0; j<8; j++)
1043 {
1044 if(!p_iputl(itemsbuf[i].initiald[j],f))
1045 {
1046 new_return(24);
1047 }
1048 }
1049
1050 for(int32_t j=0; j<2; j++)
1051 {
1052 if(!p_putc(itemsbuf[i].initiala[j],f))
1053 {
1054 new_return(25);
1055 }
1056 }
1057
1058 if(!p_putc(itemsbuf[i].wpn,f))
1059 {
1060 new_return(26);
1061 }
1062
1063 if(!p_putc(itemsbuf[i].wpn2,f))
1064 {
1065 new_return(27);
1066 }
1067
1068 if(!p_putc(itemsbuf[i].wpn3,f))
1069 {
1070 new_return(28);
1071 }
1072
1073 if(!p_putc(itemsbuf[i].wpn4,f))
1074 {
1075 new_return(29);
1076 }
1077
1078 if(!p_putc(itemsbuf[i].wpn5,f))
1079 {
1080 new_return(30);
1081 }
1082
1083 if(!p_putc(itemsbuf[i].wpn6,f))
1084 {
1085 new_return(31);
1086 }
1087
1088 if(!p_putc(itemsbuf[i].wpn7,f))
1089 {
1090 new_return(32);
1091 }
1092
1093 if(!p_putc(itemsbuf[i].wpn8,f))
1094 {
1095 new_return(33);
1096 }
1097
1098 if(!p_putc(itemsbuf[i].wpn9,f))
1099 {
1100 new_return(34);
1101 }
1102
1103 if(!p_putc(itemsbuf[i].wpn10,f))
1104 {
1105 new_return(35);
1106 }
1107
1108 if(!p_putc(itemsbuf[i].pickup_hearts,f))
1109 {
1110 new_return(36);
1111 }
1112
1113 if(!p_iputl(itemsbuf[i].misc1,f))
1114 {
1115 new_return(37);
1116 }
1117
1118 if(!p_iputl(itemsbuf[i].misc2,f))
1119 {
1120 new_return(38);
1121 }
1122
1123 for(auto q = 0; q < 2; ++q)
1124 {
1125 if(!p_iputw(itemsbuf[i].cost_amount[q],f))
1126 {
1127 new_return(39);
1128 }
1129 }
1130
1131 if(!p_iputl(itemsbuf[i].misc3,f))
1132 {
1133 new_return(40);
1134 }
1135
1136 if(!p_iputl(itemsbuf[i].misc4,f))
1137 {
1138 new_return(41);
1139 }
1140
1141 if(!p_iputl(itemsbuf[i].misc5,f))
1142 {
1143 new_return(42);
1144 }
1145
1146 if(!p_iputl(itemsbuf[i].misc6,f))
1147 {
1148 new_return(43);
1149 }
1150
1151 if(!p_iputl(itemsbuf[i].misc7,f))
1152 {
1153 new_return(44);
1154 }
1155
1156 if(!p_iputl(itemsbuf[i].misc8,f))
1157 {
1158 new_return(45);
1159 }
1160
1161 if(!p_iputl(itemsbuf[i].misc9,f))
1162 {
1163 new_return(46);
1164 }
1165
1166 if(!p_iputl(itemsbuf[i].misc10,f))
1167 {
1168 new_return(47);
1169 }
1170
1171 if(!p_putc(itemsbuf[i].usesound,f))
1172 {
1173 new_return(48);
1174 }
1175
1176 if(!p_putc(itemsbuf[i].usesound2,f))
1177 {
1178 new_return(48);
1179 }
1180
1181 //New itemdata vars -Z
1182 //! version 27
1183
1184 if(!p_putc(itemsbuf[i].useweapon,f))
1185 {
1186 new_return(49);
1187 }
1188 if(!p_putc(itemsbuf[i].usedefence,f))
1189 {
1190 new_return(50);
1191 }
1192 if(!p_iputl(itemsbuf[i].weaprange,f))
1193 {
1194 new_return(51);
1195 }
1196 if(!p_iputl(itemsbuf[i].weapduration,f))
1197 {
1198 new_return(52);
1199 }
1200 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
1201 if(!p_iputl(itemsbuf[i].weap_pattern[q],f))
1202 {
1203 new_return(53);
1204 }
1205 }
1206 //version 28
1207 if(!p_iputl(itemsbuf[i].duplicates,f))
1208 {
1209 new_return(54);
1210 }
1211 for ( int32_t q = 0; q < INITIAL_D; q++ )
1212 {
1213 if(!p_iputl(itemsbuf[i].weap_initiald[q],f))
1214 {
1215 new_return(55);
1216 }
1217 }
1218 for ( int32_t q = 0; q < INITIAL_A; q++ )
1219 {
1220 if(!p_putc(itemsbuf[i].weap_initiala[q],f))
1221 {
1222 new_return(56);
1223 }
1224 }
1225
1226 if(!p_putc(itemsbuf[i].drawlayer,f))
1227 {
1228 new_return(57);
1229 }
1230
1231
1232 if(!p_iputl(itemsbuf[i].hxofs,f))
1233 {
1234 new_return(58);
1235 }
1236 if(!p_iputl(itemsbuf[i].hyofs,f))
1237 {
1238 new_return(59);
1239 }
1240 if(!p_iputl(itemsbuf[i].hxsz,f))
1241 {
1242 new_return(60);
1243 }
1244 if(!p_iputl(itemsbuf[i].hysz,f))
1245 {
1246 new_return(61);
1247 }
1248 if(!p_iputl(itemsbuf[i].hzsz,f))
1249 {
1250 new_return(62);
1251 }
1252 if(!p_iputl(itemsbuf[i].xofs,f))
1253 {
1254 new_return(63);
1255 }
1256 if(!p_iputl(itemsbuf[i].yofs,f))
1257 {
1258 new_return(64);
1259 }
1260 if(!p_iputl(itemsbuf[i].weap_hxofs,f))
1261 {
1262 new_return(65);
1263 }
1264 if(!p_iputl(itemsbuf[i].weap_hyofs,f))
1265 {
1266 new_return(66);
1267 }
1268 if(!p_iputl(itemsbuf[i].weap_hxsz,f))
1269 {
1270 new_return(67);
1271 }
1272 if(!p_iputl(itemsbuf[i].weap_hysz,f))
1273 {
1274 new_return(68);
1275 }
1276 if(!p_iputl(itemsbuf[i].weap_hzsz,f))
1277 {
1278 new_return(69);
1279 }
1280 if(!p_iputl(itemsbuf[i].weap_xofs,f))
1281 {
1282 new_return(70);
1283 }
1284 if(!p_iputl(itemsbuf[i].weap_yofs,f))
1285 {
1286 new_return(71);
1287 }
1288 if(!p_iputw(itemsbuf[i].weaponscript,f))
1289 {
1290 new_return(72);
1291 }
1292 if(!p_iputl(itemsbuf[i].wpnsprite,f))
1293 {
1294 new_return(73);
1295 }
1296
1297 for(auto q = 0; q < 2; ++q)
1298 {
1299 if(!p_iputl(itemsbuf[i].magiccosttimer[q],f))
1300 {
1301 new_return(74);
1302 }
1303 }
1304 if(!p_iputl(itemsbuf[i].overrideFLAGS,f))
1305 {
1306 new_return(75);
1307 }
1308 if(!p_iputl(itemsbuf[i].tilew,f))
1309 {
1310 new_return(76);
1311 }
1312 if(!p_iputl(itemsbuf[i].tileh,f))
1313 {
1314 new_return(77);
1315 }
1316 if(!p_iputl(itemsbuf[i].weapoverrideFLAGS,f))
1317 {
1318 new_return(78);
1319 }
1320 if(!p_iputl(itemsbuf[i].weap_tilew,f))
1321 {
1322 new_return(79);
1323 }
1324 if(!p_iputl(itemsbuf[i].weap_tileh,f))
1325 {
1326 new_return(80);
1327 }
1328 if(!p_iputl(itemsbuf[i].pickup,f))
1329 {
1330 new_return(81);
1331 }
1332 if(!p_iputw(itemsbuf[i].pstring,f))
1333 {
1334 new_return(82);
1335 }
1336 if(!p_iputw(itemsbuf[i].pickup_string_flags,f))
1337 {
1338 new_return(83);
1339 }
1340
1341 for(auto q = 0; q < 2; ++q)
1342 {
1343 if(!p_putc(itemsbuf[i].cost_counter[q],f))
1344 {
1345 new_return(84);
1346 }
1347 }
1348
1349 //InitD[] labels
1350 for ( int32_t q = 0; q < 8; q++ )
1351 {
1352 for ( int32_t w = 0; w < 65; w++ )
1353 {
1354 if(!p_putc(itemsbuf[i].initD_label[q][w],f))
1355 {
1356 new_return(85);
1357 }
1358 }
1359 for ( int32_t w = 0; w < 65; w++ )
1360 {
1361 if(!p_putc(itemsbuf[i].weapon_initD_label[q][w],f))
1362 {
1363 new_return(86);
1364 }
1365 }
1366 for ( int32_t w = 0; w < 65; w++ )
1367 {
1368 if(!p_putc(itemsbuf[i].sprite_initD_label[q][w],f))
1369 {
1370 new_return(87);
1371 }
1372 }
1373 if(!p_iputl(itemsbuf[i].sprite_initiald[q],f))
1374 {
1375 new_return(88);
1376 }
1377 }
1378 for ( int32_t q = 0; q < 2; q++ )
1379 {
1380 if(!p_putc(itemsbuf[i].sprite_initiala[q],f))
1381 {
1382 new_return(89);
1383 }
1384
1385 }
1386 if(!p_iputw(itemsbuf[i].sprite_script,f))
1387 {
1388 new_return(90);
1389 }
1390 if(!p_putc(itemsbuf[i].pickupflag,f))
1391 {
1392 new_return(91);
1393 }
1394 return 1;
1395 }
1396
1397 int32_t onCustomItems()
1398 {
1399 ItemListerDialog().show();
1400 refresh(rMAP+rCOMBOS);
1401 return D_O_K;
1402 }
1403
1404 static DIALOG wpndata_dlg[] =
1405 {
1406 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp)
1407 { jwin_win_proc, 55, 40, 210, 163, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
1408 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
1409 { d_cstile_proc, 198, 84, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
1410 { jwin_button_proc, 90, 176, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
1411 { jwin_button_proc, 170, 176, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
1412 { jwin_check_proc, 198, 109, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Auto-flash", NULL, NULL },
1413 { jwin_check_proc, 198, 120, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "2P Flash", NULL, NULL },
1414 { jwin_check_proc, 198, 131, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "H-Flip", NULL, NULL },
1415 { jwin_check_proc, 198, 142, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "V-Flip", NULL, NULL },
1416 { jwin_text_proc, 61, 88, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Flash CSet:", NULL, NULL },
1417 //10
1418 { jwin_text_proc, 61, 106, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Frames:", NULL, NULL },
1419 { jwin_text_proc, 61, 124, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Speed:", NULL, NULL },
1420 { jwin_text_proc, 61, 142, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Miscellaneous Type:", NULL, NULL },
1421 { jwin_edit_proc, 160, 88, 35, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
1422 { jwin_edit_proc, 160, 106, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1423 { jwin_edit_proc, 160, 124, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1424 { jwin_edit_proc, 160, 142, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1425 { jwin_check_proc, 198, 153, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Behind", NULL, NULL },
1426 { jwin_edit_proc, 92, 65, 155, 16, vc(12), vc(1), 0, 0, 64, 0, NULL, NULL, NULL },
1427 { jwin_text_proc, 61, 69, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
1428 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
1429 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
1430 };
1431
1432
1433
1434 void edit_weapondata(int32_t index)
1435 {
1436 call_sprite_dlg(index); return;
1437 //OLD CODE
1438 /*
1439 char frm[8], spd[8], fcs[8], typ[8];
1440 char name[64];
1441 char wpnnumstr[75];
1442
1443 sprintf(wpnnumstr, "Sprite %d: %s", index, weapon_string[index]);
1444 wpndata_dlg[0].dp = wpnnumstr;
1445 wpndata_dlg[0].dp2 = get_zc_font(font_lfont);
1446 wpndata_dlg[2].d1 = wpnsbuf[index].tile;
1447 wpndata_dlg[2].d2 = wpnsbuf[index].csets&15;
1448
1449 for(int32_t i=0; i<4; i++)
1450 wpndata_dlg[i+5].flags = (wpnsbuf[index].misc&(1<<i)) ? D_SELECTED : 0;
1451
1452 wpndata_dlg[17].flags = (wpnsbuf[index].misc & WF_BEHIND) ? D_SELECTED : 0;
1453
1454 sprintf(fcs,"%d",wpnsbuf[index].csets>>4);
1455 sprintf(frm,"%d",wpnsbuf[index].frames);
1456 sprintf(spd,"%d",wpnsbuf[index].speed);
1457 sprintf(typ,"%d",wpnsbuf[index].type);
1458 wpndata_dlg[13].dp = fcs;
1459 wpndata_dlg[14].dp = frm;
1460 wpndata_dlg[15].dp = spd;
1461 wpndata_dlg[16].dp = typ;
1462 sprintf(name,"%s",weapon_string[index]);
1463 wpndata_dlg[18].dp = name;
1464
1465 large_dialog(wpndata_dlg);
1466
1467 int32_t ret;
1468 wpndata test;
1469
1470 do
1471 {
1472 ret = do_zqdialog(wpndata_dlg,3);
1473
1474 test.tile = wpndata_dlg[2].d1;
1475 test.csets = wpndata_dlg[2].d2;
1476
1477 test.misc = 0;
1478
1479 for(int32_t i=0; i<4; i++)
1480 if(wpndata_dlg[i+5].flags & D_SELECTED)
1481 test.misc |= 1<<i;
1482
1483 test.misc |= (wpndata_dlg[17].flags & D_SELECTED) ? WF_BEHIND : 0;
1484
1485 test.csets |= (atoi(fcs)&15)<<4;
1486 test.frames = atoi(frm);
1487 test.speed = atoi(spd);
1488 test.type = atoi(typ);
1489 test.script = 0; // Not used yet
1490 }
1491 while(ret==17);
1492
1493 if(ret==3)
1494 {
1495 strcpy(weapon_string[index],name);
1496 wpnsbuf[index] = test;
1497 saved = false;
1498 }*/
1499
1500 }
1501
1502 int32_t onCustomWpns()
1503 {
1504 /*
1505 char *hold = item_string[0];
1506 item_string[0] = "rupee (1)";
1507 */
1508
1509 build_biw_list();
1510
1511 int32_t index = select_weapon("Select Weapon",biw[0].i);
1512
1513 while(index >= 0)
1514 {
1515 edit_weapondata(index);
1516 index = select_weapon("Select Weapon",index);
1517 }
1518
1519 refresh(rMAP+rCOMBOS);
1520 return D_O_K;
1521 }
1522
1523 int32_t onMiscSprites()
1524 {
1525 MiscSprsDialog(QMisc.sprites, 20, [](int32_t* newsprs)
1526 {
1527 saved = false;
1528 for(auto q = 0; q < sprMAX; ++q)
1529 QMisc.sprites[q] = byte(newsprs[q]);
1530 }).show();
1531 return D_O_K;
1532 }
1533
1534 int32_t onMiscSFX()
1535 {
1536 MiscSFXDialog(QMisc.miscsfx, 20, [](int32_t* newsfx)
1537 {
1538 saved = false;
1539 for(auto q = 0; q < sfxMAX; ++q)
1540 QMisc.miscsfx[q] = byte(newsfx[q]);
1541 }).show();
1542 return D_O_K;
1543 }
1544
1545 static int32_t enedata_data_list[] =
1546 {
1547 //2,3,4 --moved to EOL as 247,248,249, to make room for tabs. -Z
1548 247,248,249,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
1549 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,138,139,140,141,143,-1
1550 };
1551
1552 static int32_t enedata_data2_list[] =
1553 {
1554 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,179,180,181,182,183,184,187,188,189,190, 288, 289, 296, 297,-1
1555 };
1556
1557 static int32_t enedata_data3_list[] =
1558 {
1559 // d_dummy_proc entries still must be somewhere on the editor.
1560 // They will be hidden, but if ther are not referenced, this causes objects
1561 // to refuse to click!
1562 // This was the cause of flags not clicking properly and Enemy Editor UI elements not responding to mouse input. -Z
1563 5,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,
1564 286,287,290,291,292,293,294,295,298,299,300,301,302,303,304,305,306,307,310,311,312,313,314,315,
1565 -1
1566 };
1567
1568 static int32_t enedata_data4_list[] =
1569 {
1570 308, 309, 316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,
1571 -1
1572 };
1573
1574 static int32_t enedata_flags_list[] =
1575 {
1576 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,98,99,100,101,102,103,104,105,106,120,121,400,-1
1577 };
1578
1579 static int32_t enedata_flags2_list[] =
1580 {
1581 90,91,92,93,94,95,96,97,401,402,403,404,405,406,407,408,409,410,411,412,413,414,-1
1582 };
1583
1584 static int32_t enedata_editorflags_list[]=
1585 {
1586 254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,
1587 -1
1588 };
1589
1590 static int32_t enedata_flags3_list[] =
1591 {
1592 107,108,109,110,111,112,113,114,115,116,117,118,119,185,186,399,-1
1593 }; //REMEMBER: If you undummy anything from 400-414, make sure to remove it from enedata_flags2_list! That list gets everything in it disabled.
1594
1595 static int32_t enedata_defense_list[] =
1596 {
1597 144,145,146,147,148,149,150,151,152,161,162,163,164,165,166,167,168,169,178,-1
1598 };
1599
1600 static int32_t enedata_defense2_list[] =
1601 {
1602 153,154,155,156,157,158,159,160,170,171,172,173,174,175,176,177,191,192,415,416,-1
1603 };
1604
1605 static int32_t enedata_defense3_list[] =
1606 {
1607 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1608 };
1609
1610 static int32_t enedata_spritesize_list[] =
1611 {
1612 213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,239,240,241,242,243,244,245,246,-1
1613 };
1614
1615 static int32_t enemy_defence_tabs_list[] =
1616 {
1617 2,-1
1618 };
1619
1620 static int32_t enemy_basic_tabs_list[] =
1621 {
1622 3,-1
1623 };
1624
1625 static int32_t enemy_flags_tabs_list[] =
1626 {
1627 4,-1
1628 };
1629
1630
1631 static int32_t enemy_attributes_tabs_list[] =
1632 {
1633 5,-1
1634 };
1635
1636 static int32_t enemy_graphics_tabs_list[] =
1637 {
1638 6,-1
1639 };
1640
1641 static int32_t enemy_movement_tabs_list[] =
1642 {
1643 250,-1
1644 };
1645
1646 static int32_t enemy_script_tabs_list[] =
1647 {
1648 251,-1
1649 };
1650
1651
1652 static int32_t enemy_scripts_list[] =
1653 {
1654
1655 334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,
1656 377,378,379,380,381,382,383,384,
1657 426,427,428,429,430,431,432,433,
1658 -1
1659 };
1660
1661 static int32_t enemy_weapon_scripts_list[] =
1662 {
1663 353,354,355,356,357,358,359,360,
1664 361,362,363,364,365,366,367,368,
1665 369,370,
1666 385,386,387,388,389,390,391,392,
1667 434,435,436,437,438,439,440,441,
1668 -1
1669 };
1670 static int32_t enemy_moveflag_list[] =
1671 {
1672 371, 372, 373, 374, 375, 417, 418, 419,
1673 420, 421, 422, 423, 424, 425,
1674 -1
1675 };
1676 static int32_t enemy_movement_list[] =
1677 {
1678 -1
1679 };
1680
1681 static int32_t enemy_gfx_sprites_list[] =
1682 {
1683 235,236,393,394,395,396,397,398,
1684 -1
1685 };
1686
1687
1688 static TABPANEL enemy_graphics_tabs[] =
1689 {
1690 { (char *)"Sprites", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1691 { NULL, 0, NULL, 0, NULL }
1692 };
1693
1694
1695
1696 /*
1697
1698
1699
1700 static int32_t enemy_sounds_tabs_list[] =
1701 {
1702 250,-1
1703 };
1704
1705
1706 static int32_t enemy_attacks_tabs_list[] =
1707 {
1708 5,-1
1709 };
1710
1711 static int32_t enemy_sfx_sounds_list[] =
1712 {
1713 -1
1714 };
1715
1716 static int32_t enemy_sfx_bgsounds_list[] =
1717 {
1718 -1
1719 };
1720
1721 static int32_t enemy_attacks_list[] =
1722 {
1723 -1
1724 };
1725 static int32_t enemy_attacks_Wmove_list[] =
1726 {
1727 -1
1728 };
1729
1730
1731
1732 */
1733
1734
1735
1736
1737
1738 /*
1739
1740 static TABPANEL enemy_sounds_tabs[] =
1741 {
1742 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1743 // { (char *)"Background Sounds", D_SELECTED, enemy_sfx_bgsounds_list, 0, NULL },
1744 { NULL, 0, NULL, 0, NULL }
1745 };
1746
1747
1748
1749 static TABPANEL enemy_attacks_tabs[] =
1750 {
1751 // { (char *)"Attacks", D_SELECTED, enemy_attacks_list, 0, NULL },
1752 // { (char *)"Weapon Movement", D_SELECTED, enemy_attacks_Wmove_list, 0, NULL },
1753 { NULL, 0, NULL, 0, NULL }
1754 };
1755
1756
1757 */
1758
1759
1760 static int32_t enedata_defense_ranged_list[] =
1761 {
1762 //ranged 1
1763 //brang, arrow, magic, fire, byrna, whistle
1764 144, 161, 147, 164, 150, 167, 148, 165, 160, 177, 191, 192,
1765 -1
1766 };
1767
1768
1769 //193 == text; 203 == lister
1770 static int32_t enedata_defense_script_list[] =
1771 {
1772 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1773 };
1774
1775 static int32_t enedata_defense_melee_list[] =
1776 {
1777 //melee
1778 //sword, bomb, sbomb, wand,
1779 153, 170, 145, 162, 146, 163, 149, 166,
1780 //hammer, boots, hookshot
1781 152, 169, 159, 176, 151, 168,
1782 //set all
1783 178,
1784 };
1785
1786 static int32_t enedata_defense_reflected_list[] =
1787 {
1788 //reflected
1789 //ref beam, ref magic, ref fireball, refl rock,
1790 155, 172, 156, 173, 157, 174, 158, 175,
1791 -1
1792 };
1793
1794 static TABPANEL enemy_movement_tabs[] =
1795 {
1796 { (char *)"Move Flags", D_SELECTED, enemy_moveflag_list, 0, NULL },
1797 { (char *)"Enemy Movement", 0, enemy_movement_list, 0, NULL },
1798 { NULL, 0, NULL, 0, NULL }
1799 };
1800
1801 static TABPANEL enemy_script_tabs[] =
1802 {
1803 { (char *)"Action Script", D_SELECTED, enemy_scripts_list, 0, NULL },
1804 { (char *)"Weapon Script", 0, enemy_weapon_scripts_list, 0, NULL },
1805 { NULL, 0, NULL, 0, NULL }
1806 };
1807
1808 static TABPANEL enemy_defence_tabs[] =
1809 {
1810
1811 { (char *)"Defs 1", D_SELECTED, enedata_defense_list, 0, NULL },
1812 { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1813 { (char *)"Script", 0, enedata_defense3_list, 0, NULL },
1814
1815 /*
1816 { (char *)"Melee", D_SELECTED, enedata_defense_melee_list, 0, NULL },
1817 { (char *)"Ranged", 0, enedata_defense_ranged_list, 0, NULL },
1818 { (char *)"Reflected", 0, enedata_defense_reflected_list, 0, NULL },
1819 { (char *)"Script", 0, enedata_defense_script_list, 0, NULL },
1820 */
1821 { NULL, 0, NULL, 0, NULL }
1822 };
1823
1824 static TABPANEL enemy_flags_tabs[] =
1825 {
1826 { (char *)"Basic Flags", D_SELECTED, enedata_flags_list, 0, NULL },
1827 { (char *)"Behaviour", 0, enedata_editorflags_list, 0, NULL },
1828 { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1829 { NULL, 0, NULL, 0, NULL }
1830 };
1831
1832 static TABPANEL enemy_basic_tabs[] =
1833 {
1834 { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1835 { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1836 { (char *)"Data 3", 0, enedata_data3_list, 0, NULL },
1837 { (char *)"Data 4", 0, enedata_data4_list, 0, NULL },
1838 { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1839 // { (char *)"Graphics", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1840 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1841 { NULL, 0, NULL, 0, NULL }
1842 };
1843
1844 static TABPANEL enedata_tabs[] =
1845 {
1846 // { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1847 // { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1848 { (char *)"Basic", D_SELECTED, enemy_basic_tabs_list, 0, NULL },
1849 // { (char *)"Misc. Flags", 0, enedata_flags_list, 0, NULL },
1850 // { (char *)"Flags 2", 0, enedata_flags2_list, 0, NULL },
1851 { (char *)"Defenses", 0, enemy_defence_tabs_list, 0, NULL },
1852 // { (char *)"Defs 1", 0, enedata_defense_list, 0, NULL },
1853 // { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1854 // { (char *)"Defs 3", 0, enedata_defense3_list, 0, NULL },
1855 { (char *)"Flags", 0, enemy_flags_tabs_list, 0, NULL },
1856 // { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1857 // { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1858 //Unimplemented at present. -Z
1859 { (char *)"Movement", 0, enemy_movement_tabs_list, 0, NULL },
1860 // { (char *)"Attacks", 0, enemy_attacks_tabs_list, 0, NULL },
1861 // { (char *)"Sound Effects", 0, enemy_sounds_tabs_list, 0, NULL },
1862 { (char *)"Graphics", 0, enemy_graphics_tabs_list, 0, NULL },
1863 { (char *)"Scripts", 0, enemy_script_tabs_list, 0, NULL },
1864 { NULL, 0, NULL, 0, NULL }
1865 };
1866
1867
1868 list_data_struct bief[eeMAX];
1869 int32_t bief_cnt=-1;
1870
1871 void build_bief_list()
1872 {
1873 int32_t start=bief_cnt=0;
1874
1875 for(int32_t i=start; i<eeMAX; i++)
1876 {
1877 //Load enemy names from the module
1878 //if(moduledata.enem_type_names[i][0]!='-')
1879 if (moduledata.enem_type_names[i][0]!=0)
1880 {
1881 if(moduledata.enem_type_names[i][0]!='-')
1882 {
1883 //load these from the module
1884 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1885 //bief[bief_cnt].s = (char *)enetype_string[i];
1886 bief[bief_cnt].s = (char *)moduledata.enem_type_names[i];
1887 bief[bief_cnt].i = i;
1888 ++bief_cnt;
1889 }
1890 }
1891 else //not set in the module file, so use the default
1892 {
1893 if(enetype_string[i][0]!='-')
1894 {
1895 //load these from the module
1896 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1897 //bief[bief_cnt].s = (char *)enetype_string[i];
1898 bief[bief_cnt].s = (char *)enetype_string[i];
1899 bief[bief_cnt].i = i;
1900 ++bief_cnt;
1901 }
1902
1903 }
1904
1905 }
1906
1907 // No alphabetic sorting for this list
1908 for(int32_t j=start+1; j<bief_cnt-1; j++)
1909 {
1910 if(!strcmp(bief[j].s,"(None)"))
1911 {
1912 for(int32_t i=j; i>0; i--)
1913 zc_swap(bief[i],bief[i-1]);
1914
1915 break;
1916 }
1917 }
1918 }
1919
1920 const char *enetypelist(int32_t index, int32_t *list_size)
1921 {
1922 if(index<0)
1923 {
1924 *list_size = bief_cnt;
1925 return NULL;
1926 }
1927
1928 return bief[index].s;
1929 }
1930
1931 list_data_struct biea[aMAX];
1932 int32_t biea_cnt=-1;
1933
1934 void build_biea_list()
1935 {
1936 int32_t start=biea_cnt=0;
1937
1938 for(int32_t i=start; i<aMAX; i++)
1939 {
1940
1941 if ( moduledata.enem_anim_type_names[1][0] != 0 )
1942 {
1943 if(eneanim_string[i][0]!='-')
1944 {
1945 biea[biea_cnt].s = (char *)moduledata.enem_anim_type_names[i];
1946 biea[biea_cnt].i = i;
1947 ++biea_cnt;
1948 }
1949 }
1950 else
1951 {
1952 if(eneanim_string[i][0]!='-')
1953 {
1954 biea[biea_cnt].s = (char *)eneanim_string[i];
1955 biea[biea_cnt].i = i;
1956 ++biea_cnt;
1957 }
1958 }
1959 }
1960
1961 for(int32_t i=start; i<biea_cnt-1; i++)
1962 for(int32_t j=i+1; j<biea_cnt; j++)
1963 if(stricmp(biea[i].s,biea[j].s)>0 && strcmp(biea[j].s,""))
1964 zc_swap(biea[i],biea[j]);
1965 }
1966
1967
1968 const char *eneanimlist(int32_t index, int32_t *list_size)
1969 {
1970 if(index<0)
1971 {
1972 *list_size = biea_cnt;
1973 return NULL;
1974 }
1975
1976 return biea[index].s;
1977 }
1978
1979 const char *itemsetlist(int32_t index, int32_t *list_size)
1980 {
1981 if(index>=0)
1982 {
1983 bound(index,0,count_item_drop_sets()-1);
1984 return item_drop_sets[index].name;
1985 // return itemset_string[index];
1986 }
1987
1988 *list_size=count_item_drop_sets();
1989 return NULL;
1990 }
1991
1992 list_data_struct biew[MAXWPNS];
1993 int32_t biew_cnt=-1;
1994
1995 char temp_custom_ew_strings[10][40];
1996
1997 static int32_t enemy_weapon_types[]=
1998 {
1999 128, ewFireball,ewArrow,ewBrang,ewSword,
2000 ewRock,ewMagic,ewBomb,ewSBomb,
2001 //137
2002 ewLitBomb,ewLitSBomb,ewFireTrail,ewFlame,
2003 ewWind,ewFlame2,ewFlame2Trail,
2004 //145
2005 ewIce,ewFireball2
2006
2007 };
2008
2009 static int32_t enemy_script_weapon_types[]=
2010 {
2011 wScript1, wScript2, wScript3, wScript4,
2012 //35
2013 wScript5, wScript6, wScript7, wScript8,
2014 //39
2015 wScript9, wScript10
2016
2017 };
2018
2019 void build_biew_list()
2020 {
2021 biew_cnt=0;
2022
2023 memset(temp_custom_ew_strings, 0, sizeof(temp_custom_ew_strings));
2024
2025 for(int32_t i=0; i<wMax-wEnemyWeapons; i++)
2026 {
2027 //if(eweapon_string[i][0]!='-')
2028 if(moduledata.enemy_weapon_names[i][0]!='-')
2029 {
2030 //biew[biew_cnt].s = (char *)eweapon_string[i];
2031 biew[biew_cnt].s = (char *)moduledata.enemy_weapon_names[i];
2032 biew[biew_cnt].i = enemy_weapon_types[i];
2033 ++biew_cnt;
2034 }
2035 }
2036 for(int32_t i = 0; i < 10; i++)
2037 {
2038 biew[biew_cnt].s = (char *)moduledata.enemy_scriptweaponweapon_names[i];
2039 biew[biew_cnt].i = enemy_script_weapon_types[i];
2040 ++biew_cnt;
2041 }
2042 al_trace("biew_cnt is: %d\n", biew_cnt);
2043 for ( int32_t i = 0; i < biew_cnt; i++ )
2044 {
2045 al_trace("biew[%d] id is (%d) and string is (%s)\n", i, biew[i].i, biew[i].s);
2046
2047 }
2048
2049 }
2050
2051 const char *eweaponlist(int32_t index, int32_t *list_size)
2052 {
2053 if(biew_cnt==-1)
2054 build_biew_list();
2055
2056 if(index>=0)
2057 {
2058 bound(index,0,biew_cnt-1);
2059 return biew[index].s;
2060 }
2061
2062 *list_size=biew_cnt;
2063 return NULL;
2064 }
2065
2066
2067 //
2068 // Enemy Misc. Attribute label swapping device
2069 //
2070 struct EnemyNameInfo
2071 {
2072 int32_t family;
2073 char const* misc[10];
2074 void* list[32];
2075 char *flags[16];
2076 char *attributes[32];
2077
2078 };
2079
2080 const char *walkmisc1list(int32_t index, int32_t *list_size)
2081 {
2082 if(index>=0)
2083 {
2084 bound(index,0,e1tLAST-1);
2085 return walkmisc1_string[index];
2086 }
2087
2088 *list_size = e1tLAST;
2089 return NULL;
2090 }
2091
2092 const char *walkmisc2list(int32_t index, int32_t *list_size)
2093 {
2094 if(index>=0)
2095 {
2096 bound(index,0,e2tTRIBBLE);
2097 return walkmisc2_string[index];
2098 }
2099
2100 *list_size = e2tTRIBBLE+1;
2101 return NULL;
2102 }
2103
2104 const char *walkmisc7list(int32_t index, int32_t *list_size)
2105 {
2106 if(index>=0)
2107 {
2108 bound(index,0,e7tEATHURT);
2109 return walkmisc7_string[index];
2110 }
2111
2112 *list_size = e7tEATHURT+1;
2113 return NULL;
2114 }
2115
2116 const char *walkmisc9list(int32_t index, int32_t *list_size)
2117 {
2118 if(index>=0)
2119 {
2120 bound(index,0,e9tARMOS);
2121 //return walkmisc9_string[index];
2122 return (char *)moduledata.walkmisc9_names[index];
2123 }
2124
2125 *list_size = e9tARMOS+1;
2126 return NULL;
2127 }
2128
2129 const char *gleeokmisc3list(int32_t index, int32_t *list_size)
2130 {
2131 if(index>=0)
2132 {
2133 return (index ? "Breath" : "1 Shot");
2134 }
2135
2136 *list_size = 2;
2137 return NULL;
2138 }
2139
2140 const char *gohmamisc1list(int32_t index, int32_t *list_size)
2141 {
2142 if(index>=0)
2143 {
2144 return (index==2 ? "Breath" : index==1 ? "3 Shots" : "1 Shot");
2145 }
2146
2147 *list_size = 3;
2148 return NULL;
2149 }
2150
2151 const char *manhandlamisc2list(int32_t index, int32_t *list_size)
2152 {
2153 if(index>=0)
2154 {
2155 return (index ? "2x2 (8 Heads)" : "1x1 (4 Heads)");
2156 }
2157
2158 *list_size = 2;
2159 return NULL;
2160 }
2161
2162 const char *aquamisc1list(int32_t index, int32_t *list_size)
2163 {
2164 if(index>=0)
2165 {
2166 return (index ? "Left (Facing Right)" : "Right (Facing Left)");
2167 }
2168
2169 *list_size = 2;
2170 return NULL;
2171 }
2172
2173 const char *patramisc4list(int32_t index, int32_t *list_size)
2174 {
2175 if(index>=0)
2176 {
2177 return (index ? "Oval" : "Big Circle");
2178 }
2179
2180 *list_size = 2;
2181 return NULL;
2182 }
2183
2184 const char *patramisc5list(int32_t index, int32_t *list_size)
2185 {
2186 if(index>=0)
2187 {
2188 return (index==3 ? "Inner + Center" : index==2 ? "Inner Eyes" : index==1 ? "Center Eye" : "None");
2189 }
2190
2191 *list_size = 4;
2192 return NULL;
2193 }
2194
2195 const char *patramisc10list(int32_t index, int32_t *list_size)
2196 {
2197 if(index>=0)
2198 {
2199 return (index ? "2x2 Patra" : "1x1 Patra");
2200 }
2201
2202 *list_size = 2;
2203 return NULL;
2204 }
2205
2206 const char *patramisc20list(int32_t index, int32_t *list_size)
2207 {
2208 if(index>=0)
2209 {
2210 switch(index)
2211 {
2212 case 4:
2213 return "Stream";
2214 case 3:
2215 return "Ring";
2216 case 2:
2217 return "Barrage";
2218 case 1:
2219 return "Random (Single)";
2220 default:
2221 return "Random (Any)";
2222 }
2223 }
2224
2225 *list_size = 5;
2226 return NULL;
2227 }
2228
2229 const char *patramisc22list(int32_t index, int32_t *list_size)
2230 {
2231 if(index>=0)
2232 {
2233 switch(index)
2234 {
2235 case 2:
2236 return "Expand + Warning";
2237 case 1:
2238 return "When Expanding";
2239 default:
2240 return "Never";
2241 }
2242 }
2243
2244 *list_size = 3;
2245 return NULL;
2246 }
2247
2248 const char *patramisc25list(int32_t index, int32_t *list_size)
2249 {
2250 if(index>=0)
2251 {
2252 switch(index)
2253 {
2254 case 3:
2255 return "When behind 1 layer";
2256 case 2:
2257 return "When Invulnerable";
2258 case 1:
2259 return "When Vulnerable";
2260 default:
2261 return "Always";
2262 }
2263 }
2264
2265 *list_size = 4;
2266 return NULL;
2267 }
2268
2269 const char *patramisc26list(int32_t index, int32_t *list_size)
2270 {
2271 if(index>=0)
2272 {
2273 switch(index)
2274 {
2275 case 2:
2276 return "Without Outer Ring";
2277 case 1:
2278 return "With Outer Ring";
2279 default:
2280 return "Always";
2281 }
2282 }
2283
2284 *list_size = 3;
2285 return NULL;
2286 }
2287
2288 const char *patramisc28list(int32_t index, int32_t *list_size)
2289 {
2290 if(index>=0)
2291 {
2292 bound(index,0,patratLAST-1);
2293 return patramisc28_string[index];
2294 }
2295
2296 *list_size = patratLAST;
2297 return NULL;
2298 }
2299
2300 const char *dodongomisc10list(int32_t index, int32_t *list_size)
2301 {
2302 if(index>=0)
2303 {
2304 return (index ? "BS-Zelda" : "NES");
2305 }
2306
2307 *list_size = 2;
2308 return NULL;
2309 }
2310
2311 const char *digdoggermisc10list(int32_t index, int32_t *list_size)
2312 {
2313 if(index>=0)
2314 {
2315 return (index ? "Kid" : "Digdogger");
2316 }
2317
2318 *list_size = 2;
2319 return NULL;
2320 }
2321
2322 const char *walkerspawnlist(int32_t index, int32_t *list_size)
2323 {
2324 if(index>=0)
2325 {
2326 return (index==2 ? "Instant" : index==1 ? "Flicker" : "Puff");
2327 }
2328
2329 *list_size = 3;
2330 return NULL;
2331 }
2332
2333 const char *wizzrobemisc1list(int32_t index, int32_t *list_size)
2334 {
2335 if(index>=0)
2336 {
2337 return (index ? "Phase" : "Teleport");
2338 }
2339
2340 *list_size = 2;
2341 return NULL;
2342 }
2343
2344 const char *wizzrobemisc2list(int32_t index, int32_t *list_size)
2345 {
2346 if(index>=0)
2347 {
2348 return (index==3 ? "Summon (Layer)" : index==2 ? "Summon" : index==1 ? "8 Shots" : "1 Shot");
2349 }
2350
2351 *list_size = 4;
2352 return NULL;
2353 }
2354
2355 const char *keesemisc1list(int32_t index, int32_t *list_size)
2356 {
2357 if(index>=0)
2358 {
2359 return (index > 1 ? "Keese (Fast)" : index > 0 ? "Bat" : "Keese");
2360 }
2361
2362 *list_size = 3;
2363 return NULL;
2364 }
2365
2366 const char *keesemisc2list(int32_t index, int32_t *list_size)
2367 {
2368 if(index>=0)
2369 {
2370 return (index ? "Tribble" : "Normal");
2371 }
2372
2373 *list_size = 2;
2374 return NULL;
2375 }
2376
2377 const char *trapmisc2list(int32_t index, int32_t *list_size)
2378 {
2379 if(index>=0)
2380 {
2381 return (index ? "Constant" : "Line Of Sight");
2382 }
2383
2384 *list_size = 2;
2385 return NULL;
2386 }
2387
2388 const char *trapmisc1list(int32_t index, int32_t *list_size)
2389 {
2390 if(index>=0)
2391 {
2392 return (index==2 ? "Vertical" : index==1 ? "Horizontal" : "4-Way");
2393 }
2394
2395 *list_size = 3;
2396 return NULL;
2397 }
2398
2399 const char *leevermisc1list(int32_t index, int32_t *list_size)
2400 {
2401 if(index>=0)
2402 {
2403 if(index==0)
2404 return "Player's path";
2405 else if(index==1)
2406 return "In place";
2407 else if(index==2)
2408 return "Player's path + second";
2409 }
2410
2411 *list_size = 3;
2412 return NULL;
2413 }
2414
2415 const char *rockmisc1list(int32_t index, int32_t *list_size)
2416 {
2417 if(index>=0)
2418 {
2419 return (index ? "2x2" : "1x1");
2420 }
2421
2422 *list_size = 2;
2423 return NULL;
2424 }
2425
2426 // 0: no, 1: yes
2427 const char *yesnomisclist(int32_t index, int32_t *list_size)
2428 {
2429 if(index>=0)
2430 {
2431 return (index ? "Yes" : "No");
2432 }
2433
2434 *list_size = 2;
2435 return NULL;
2436 }
2437
2438 // 0: yes, 1: no
2439 const char *noyesmisclist(int32_t index, int32_t *list_size)
2440 {
2441 if(index>=0)
2442 {
2443 return (index ? "No" : "Yes");
2444 }
2445
2446 *list_size = 2;
2447 return NULL;
2448 }
2449
2450 9 static ListData walkmisc1_list(walkmisc1list, &a4fonts[font_lfont_l]);
2451 9 static ListData walkmisc2_list(walkmisc2list, &a4fonts[font_lfont_l]);
2452 9 static ListData walkmisc7_list(walkmisc7list, &a4fonts[font_lfont_l]);
2453 9 static ListData walkmisc9_list(walkmisc9list, &a4fonts[font_lfont_l]);
2454
2455 9 static ListData gleeokmisc3_list(gleeokmisc3list, &a4fonts[font_lfont_l]);
2456 9 static ListData gohmamisc1_list(gohmamisc1list, &a4fonts[font_lfont_l]);
2457 9 static ListData manhandlamisc2_list(manhandlamisc2list, &a4fonts[font_lfont_l]);
2458 9 static ListData aquamisc1_list(aquamisc1list, &a4fonts[font_lfont_l]);
2459
2460 9 static ListData patramisc4_list(patramisc4list, &a4fonts[font_lfont_l]);
2461 9 static ListData patramisc5_list(patramisc5list, &a4fonts[font_lfont_l]);
2462 9 static ListData patramisc10_list(patramisc10list, &a4fonts[font_lfont_l]);
2463 9 static ListData patramisc20_list(patramisc20list, &a4fonts[font_lfont_l]);
2464 9 static ListData patramisc22_list(patramisc22list, &a4fonts[font_lfont_l]);
2465 9 static ListData patramisc25_list(patramisc25list, &a4fonts[font_lfont_l]);
2466 9 static ListData patramisc26_list(patramisc26list, &a4fonts[font_lfont_l]);
2467 9 static ListData patramisc28_list(patramisc28list, &a4fonts[font_lfont_l]);
2468
2469 9 static ListData dodongomisc10_list(dodongomisc10list, &a4fonts[font_lfont_l]);
2470
2471 9 static ListData keesemisc1_list(keesemisc1list, &a4fonts[font_lfont_l]);
2472 9 static ListData keesemisc2_list(keesemisc2list, &a4fonts[font_lfont_l]);
2473
2474 9 static ListData digdoggermisc10_list(digdoggermisc10list, &a4fonts[font_lfont_l]);
2475
2476 9 static ListData wizzrobemisc1_list(wizzrobemisc1list, &a4fonts[font_lfont_l]);
2477 9 static ListData wizzrobemisc2_list(wizzrobemisc2list, &a4fonts[font_lfont_l]);
2478
2479 9 static ListData trapmisc1_list(trapmisc1list, &a4fonts[font_lfont_l]);
2480 9 static ListData trapmisc2_list(trapmisc2list, &a4fonts[font_lfont_l]);
2481
2482 9 static ListData leevermisc1_list(leevermisc1list, &a4fonts[font_lfont_l]);
2483 9 static ListData rockmisc1_list(rockmisc1list, &a4fonts[font_lfont_l]);
2484
2485 9 static ListData yesnomisc_list(yesnomisclist, &a4fonts[font_lfont_l]);
2486 9 static ListData noyesmisc_list(noyesmisclist, &a4fonts[font_lfont_l]);
2487
2488 static EnemyNameInfo enameinf[]=
2489 {
2490 {
2491 //"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility"
2492 eeWALK, { "Shot Type:", "Death Type:", "Death Attr. 1:", "Death Attr. 2:", "Death Attr. 3:", "Extra Shots:", "Touch Effects:", "Effect Strength:", "Walk Style:", "Walk Attr.:" },
2493 { (void*)&walkmisc1_list, (void*)&walkmisc2_list, NULL, NULL, NULL, NULL, (void*)&walkmisc7_list, NULL, (void*)&walkmisc9_list, NULL, //10
2494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2496 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",
2497 (char *)"Draw Invisible as Cloaked",(char *)"Split in Place",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",
2498 (char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2499 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2500 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2501 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2502 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2503 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2504 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2505 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2506 }
2507 },
2508 {
2509 eeGLEEOK, { "Heads:", "Head HP:", "Shot Type:", NULL, "Neck Segments:", "Neck Offset 1:", "Neck Offset 2:", "Head Offset:", "Fly Head Offset:", NULL },
2510 { NULL, NULL, (void*)&gleeokmisc3_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2513 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Center Spawn X Point",(char *)"Heads Block Projectiles",
2514 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2515 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2516 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2517 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2518 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2519 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2520 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2521 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2522 }
2523 },
2524 {
2525 eeDIG, { "Enemy 1 ID:", "Enemy 2 ID:", "Enemy 3 ID:", "Enemy 4 ID:", "Enemy 1 Qty:", "Enemy 2 Qty:", "Enemy 3 Qty:", "Enemy 4 Qty:", "Unused:", "Type:" },
2526 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&digdoggermisc10_list, //10
2527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2528 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2529 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2530 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2531 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2532 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2533 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2534 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2535 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2536 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2537 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2538 }
2539 },
2540 {
2541 eePATRA, { "Outer Eyes:", "Inner Eyes:", "Eyes' HP:", "Eye Movement:", "Shooters:", "Pattern Odds:", "Pattern Cycles:", "Eye Offset:", "Eye CSet:", "Type:" },
2542 { NULL, NULL, NULL, (void*)&patramisc4_list, (void*)&patramisc5_list, NULL, NULL, NULL, NULL, (void*)&patramisc10_list, //10
2543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&patramisc20_list, NULL, //21
2544 (void*)&patramisc22_list, NULL, NULL, (void*)&patramisc25_list, (void*)&patramisc26_list, NULL, (void*)&patramisc28_list, NULL, NULL, NULL, NULL}, //32
2545 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Has Firing Animation",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Slow down when Firing",(char *)"Don't attack when expanding",
2546 (char *)"Don't expand when spawned",(char *)"Pattern Odds reset when Expanding",(char *)"Don't 'expand' without orbiters",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2547 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2548 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2549 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2550 (char *)"Transformation Inv Time:",(char *)"Shot chance (1/N per frame):",(char *)"Firing cooldown:",(char *)"Inner Eyes Firing Pattern:",
2551 (char *)"Warning Spins:",(char *)"Stays still:",(char *)"Outer Ring Loss Speed Boost:",(char *)"Inner Ring Loss Speed Boost:",
2552 (char *)"Can Fire:",(char *)"Can Expand:",(char *)"Inner Eye HP:",(char *)"Center Eye Firing Pattern:",
2553 (char *)"Outer Eye Radius:",(char *)"Inner Eye Radius:",(char *)"Outer Eye Expand Radius:",(char *)"Inner Eye Expand Radius:",
2554 }
2555 },
2556 {
2557 eePROJECTILE, { "Shot Type:", NULL, "Shot Attr. 1:", "Shot Attr. 2:", NULL, NULL, NULL, NULL, NULL, NULL },
2558 { (void*)&walkmisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2560 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2561 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2562 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2563 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2564 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2565 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2566 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2567 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2568 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2569 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2570 }
2571 },
2572 {
2573 eeGHOMA, { "Shot Type:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2574 { (void*)&gohmamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2575 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2576 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2577 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2578 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2579 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2580 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2581 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2582 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2583 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2584 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2585 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2586 }
2587 },
2588 {
2589 eeAQUA, { "Side:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2590 { (void*)&aquamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2591 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2592 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2593 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2594 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2595 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2596 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2597 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2598 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2599 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2600 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2601 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2602 }
2603 },
2604 {
2605 eeMANHAN, { "Frame rate:", "Size:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2606 { NULL, (void*)&manhandlamisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2607 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2609 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2610 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2611 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2612 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2613 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2614 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2615 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2616 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2617 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2618 }
2619 },
2620 {
2621 eeLANM, { "Segments:", "Segment Lag:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2622 { NULL, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2623 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2624 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2625 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",
2626 (char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2627 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2628 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2629 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2630 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2631 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2632 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2633 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2634 }
2635 },
2636 {
2637 eeMOLD, { "Segments:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2638 { NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2641 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2642 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2643 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2644 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2645 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2646 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2647 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2648 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2649 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2650 }
2651 },
2652 {
2653 eeWIZZ, { "Walk Style:", "Shot Type:", "Shot Attr. 1:", "Solid Combos OK:", "Teleport Delay:", NULL, NULL, NULL, NULL, NULL },
2654 { (void*)&wizzrobemisc1_list, (void*)&wizzrobemisc2_list, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, //10
2655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2657 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Old Windrobe teleport",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2658 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2659 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2660 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2661 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2662 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2663 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2664 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2665 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2666 }
2667 },
2668 {
2669 eeDONGO,{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Type :" },
2670 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&dodongomisc10_list, //10
2671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2673 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2674 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2675 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2676 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2677 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2678 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2679 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2680 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2681 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2682 }
2683 },
2684 {
2685 eeKEESE, { "Walk Style:", "Death Type:", "Enemy ID:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2686 { (void*)&keesemisc1_list, (void*)&keesemisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2689 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2690 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2691 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2692 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2693 (char *)"This Item Dispels Invisibility:",(char *)"Landing Chance (1/N):",(char *)"Landing Cooldown:",(char *)"Halt Duration",
2694 (char *)"Acceleration Frame Interval:",(char *)"Acceleration Step Modifier:",(char *)"Spawn Step:",(char *)"Tribble Timer:",
2695 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2696 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2697 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2698 }
2699 },
2700 {
2701 eeTEK, { "1/n jump start:", "1/n jump cont.:", "Jump Z velocity:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2702 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2705 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2706 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2707 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2708 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2709 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2710 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2711 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2712 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2713 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2714 }
2715 },
2716 {
2717 eeLEV, { "Emerge style:", "Submerged CSet:", "Emerging step:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2718 { (void*)&leevermisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2721 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2722 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2723 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2724 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2725 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2726 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2727 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2728 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2729 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2730 }
2731 },
2732 {
2733 eeWALLM,{ "Fixed distance:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2734 { (void*)&noyesmisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2737 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2738 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2739 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2740 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2741 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2742 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2743 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2744 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2745 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2746 }
2747 },
2748 {
2749 eeTRAP, { "Direction:", "Move Style:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2750 { (void*)&trapmisc1_list, (void*)&trapmisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2753 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2754 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2755 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2756 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2757 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2758 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2759 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2760 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2761 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2762 }
2763 },
2764 {
2765 eeROCK, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Rock size:" },
2766 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&rockmisc1_list, //10
2767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2769 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2770 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2771 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2772 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2773 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2774 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2775 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2776 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2777 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2778 }
2779 },
2780 {
2781 eeNONE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Boss Death Trigger:" },
2782 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&yesnomisc_list, //10
2783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2785 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2786 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2787 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2788 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2789 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2790 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2791 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2792 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2793 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2794 }
2795 },
2796 {
2797 eeGHINI, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2798 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2799 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2800 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2801 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2802 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2803 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2804 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2805 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2806 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2807 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2808 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2809 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2810 }
2811 },
2812 {
2813 eePEAHAT, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2814 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2815 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2817 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2818 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2819 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2820 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2821 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2822 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2823 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2824 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2825 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2826 }
2827 },
2828 {
2829 eeZORA, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2830 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2833 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Lava Only",(char *)"Lava and Water",(char *)"Shallow Water",
2834 (char *)"Doesn't regenerate health",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2835 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2836 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2837 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2838 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2839 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2840 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2841 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2842 }
2843 },
2844 {
2845 eeSPINTILE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2846 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2847 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2848 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2849 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2850 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2851 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2852 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2853 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2854 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2855 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2856 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2857 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2858 }
2859 },
2860 {
2861 eeFIRE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2862 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2863 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2864 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2865 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2866 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2867 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2868 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2869 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2870 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2871 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2872 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2873 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2874 }
2875 },
2876 {
2877 eeOTHER, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2878 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2879 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2880 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2881 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2882 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2883 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2884 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2885 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2886 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2887 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2888 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2889 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2890 }
2891 },
2892 {
2893 eeSCRIPT01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2894 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2895 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2896 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2897 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2898 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2899 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2900 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2901 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2902 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2903 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2904 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2905 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2906 }
2907 },
2908 {
2909 eeSCRIPT02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2910 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2911 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2912 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2913 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2914 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2915 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2916 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2917 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2918 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2919 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2920 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2921 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2922 }
2923 },
2924 {
2925 eeSCRIPT03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2926 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2927 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2928 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2929 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2930 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2931 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2932 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2933 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2934 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2935 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2936 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2937 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2938 }
2939 },
2940 {
2941 eeSCRIPT04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2942 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2943 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2944 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2945 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2946 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2947 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2948 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2949 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2950 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2951 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2952 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2953 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2954 }
2955 },
2956 {
2957 eeSCRIPT05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2958 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2959 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2960 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2961 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2962 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2963 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2964 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2965 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2966 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2967 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2968 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2969 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2970 }
2971 },
2972 {
2973 eeSCRIPT06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2974 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2975 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2976 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2977 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2978 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2979 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2980 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2981 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2982 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2983 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2984 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2985 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2986 }
2987 },
2988 {
2989 eeSCRIPT07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2990 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2991 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2992 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2993 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2994 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2995 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2996 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2997 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2998 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2999 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3000 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3001 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3002 }
3003 },
3004 {
3005 eeSCRIPT08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3006 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3007 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3008 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3009 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3010 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3011 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3012 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3013 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3014 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3015 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3016 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3017 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3018 }
3019 },
3020 {
3021 eeSCRIPT09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3022 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3023 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3024 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3025 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3026 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3027 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3028 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3029 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3030 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3031 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3032 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3033 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3034 }
3035 },
3036 {
3037 eeSCRIPT10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3038 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3039 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3040 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3041 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3042 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3043 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3044 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3045 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3046 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3047 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3048 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3049 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3050 }
3051 },
3052 {
3053 eeSCRIPT11, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3054 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3055 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3056 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3057 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3058 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3059 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3060 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3061 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3062 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3063 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3064 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3065 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3066 }
3067 },
3068 {
3069 eeSCRIPT12, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3070 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3071 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3072 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3073 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3074 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3075 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3076 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3077 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3078 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3079 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3080 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3081 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3082 }
3083 },
3084 {
3085 eeSCRIPT13, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3086 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3087 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3088 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3089 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3090 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3091 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3092 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3093 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3094 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3095 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3096 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3097 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3098 }
3099 },
3100 {
3101 eeSCRIPT14, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3102 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3104 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3105 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3106 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3107 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3108 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3109 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3110 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3111 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3112 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3113 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3114 }
3115 },
3116 {
3117 eeSCRIPT15, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3118 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3121 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3122 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3123 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3124 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3125 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3126 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3127 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3128 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3129 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3130 }
3131 },
3132 {
3133 eeSCRIPT16, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3134 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3136 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3137 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3138 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3139 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3140 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3141 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3142 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3143 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3144 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3145 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3146 }
3147 },
3148 {
3149 eeSCRIPT17, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3150 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3151 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3152 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3153 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3154 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3155 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3156 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3157 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3158 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3159 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3160 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3161 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3162 }
3163 },
3164 {
3165 eeSCRIPT18, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3166 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3167 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3169 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3170 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3171 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3172 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3173 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3174 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3175 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3176 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3177 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3178 }
3179 },
3180 {
3181 eeSCRIPT19, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3182 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3183 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3185 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3186 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3187 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3188 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3189 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3190 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3191 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3192 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3193 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3194 }
3195 },
3196 {
3197 eeSCRIPT20, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3198 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3201 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3202 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3203 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3204 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3205 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3206 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3207 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3208 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3209 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3210 }
3211 },
3212 {
3213 eeFFRIENDLY01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3214 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3217 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3218 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3219 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3220 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3221 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3222 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3223 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3224 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3225 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3226 }
3227 },
3228 {
3229 eeFFRIENDLY02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3230 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3231 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3232 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3233 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3234 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3235 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3236 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3237 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3238 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3239 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3240 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3241 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3242 }
3243 },
3244 {
3245 eeFFRIENDLY03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3246 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3247 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3248 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3249 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3250 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3251 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3252 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3253 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3254 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3255 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3256 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3257 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3258 }
3259 },
3260 {
3261 eeFFRIENDLY04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3262 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3263 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3264 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3265 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3266 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3267 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3268 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3269 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3270 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3271 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3272 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3273 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3274 }
3275 },
3276 {
3277 eeFFRIENDLY05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3278 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3280 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3281 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3282 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3283 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3284 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3285 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3286 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3287 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3288 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3289 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3290 }
3291 },
3292 {
3293 eeFFRIENDLY06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3294 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3296 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3297 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3298 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3299 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3300 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3301 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3302 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3303 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3304 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3305 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3306 }
3307 },
3308 {
3309 eeFFRIENDLY07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3310 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3313 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3314 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3315 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3316 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3317 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3318 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3319 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3320 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3321 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3322 }
3323 },
3324 {
3325 eeFFRIENDLY08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3326 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3329 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3330 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3331 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3332 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3333 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3334 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3335 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3336 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3337 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3338 }
3339 },
3340 {
3341 eeFFRIENDLY09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3342 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3345 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3346 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3347 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3348 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3349 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3350 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3351 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3352 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3353 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3354 }
3355 },
3356 {
3357 eeFFRIENDLY10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3358 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3361 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3362 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3363 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3364 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3365 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3366 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3367 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3368 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3369 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3370 }
3371 },
3372 {
3373 eeGUY, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3374 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3377 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3378 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3379 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3380 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3381 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3382 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3383 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3384 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3385 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3386 }
3387 },
3388 {
3389 eeGANON, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
3390 , NULL, NULL },
3391 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3393 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3394 { (char *)"Visible if the player has an Level 2 (or higher) Amulet item.",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Uses Full Hitbox",(char *)"BFlags[3]:",
3395 (char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",
3396 (char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",(char *)"Use Editor ",(char *)"When Not Invisible, Also Show Weapon Shots.",(char *)"Draw Cloaked When Not Invisible" },
3397 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3398 (char *)"This Item Dispels Invisibility:",(char *)"Death Shot Item ID",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3399 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3400 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3401 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3402 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3403 }
3404 },
3405 {
3406 -1, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3407 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3410 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3411 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3412 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3413 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3414 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3415 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3416 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3417 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3418 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3419 }
3420 }
3421 };
3422
3423 static std::map<int32_t, EnemyNameInfo *> *enamemap = NULL;
3424
3425 std::map<int32_t, EnemyNameInfo *> *getEnemyNameMap()
3426 {
3427 if(enamemap == NULL)
3428 {
3429 enamemap = new std::map<int32_t, EnemyNameInfo *>();
3430
3431 for(int32_t i=0;; i++)
3432 {
3433 EnemyNameInfo *inf = &enameinf[i];
3434
3435 if(inf->family == -1)
3436 break;
3437
3438 (*enamemap)[inf->family] = inf;
3439 }
3440 }
3441
3442 return enamemap;
3443 }
3444
3445 const char *npcscriptdroplist(int32_t index, int32_t *list_size)
3446 {
3447 if(index<0)
3448 {
3449 *list_size = binpcs_cnt;
3450 return NULL;
3451 }
3452
3453 return binpcs[index].first.c_str();
3454 }
3455 9 ListData npcscript_list(npcscriptdroplist, &font);
3456
3457 9 static ListData itemset_list(itemsetlist, &font);
3458 9 static ListData eneanim_list(eneanimlist, &font);
3459 9 static ListData enetype_list(enetypelist, &font);
3460 9 static ListData eweapon_list(eweaponlist, &font);
3461
3462
3463 const char *eweaponscriptdroplist(int32_t index, int32_t *list_size)
3464 {
3465 if(index<0)
3466 {
3467 *list_size = bieweapons_cnt;
3468 return NULL;
3469 }
3470
3471 return bieweapons[index].first.c_str();
3472 }
3473
3474
3475 //droplist like the dialog proc, naming scheme for this stuff is awful...
3476 9 ListData eweaponscript_list(eweaponscriptdroplist, &a4fonts[font_pfont]);
3477
3478
3479 9 static ListData walkerspawn_list(walkerspawnlist, &font);
3480
3481 9 static ListData sfx__list(sfxlist, &font);
3482
3483 /*
3484 static DIALOG enedata_dlg[] =
3485 {
3486 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3487 { jwin_tab_proc, 4, 24, 312, 192, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3488 //2
3489 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3490 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3491 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3492 //5
3493 { jwin_button_proc, 50, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3494 { jwin_button_proc, 130, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3495 //7
3496 { jwin_text_proc, 21, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3497 { jwin_text_proc, 44, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3498 { jwin_text_proc, 90, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3499 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3500 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3501 //12
3502 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3503 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3504 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3505 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3506 //16
3507 { jwin_text_proc, 114, 54, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3508 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3509 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3510 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3511 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3512 //21
3513 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3514 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3515 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3516 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3517 //25
3518 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3519 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3520 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3521 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3522 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3523 //30
3524 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3525 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3526 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3527 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3528 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3529 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3530 //36
3531 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3532 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3533 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3534 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3535 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 1, 0, NULL, NULL, NULL },
3536 //41
3537 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3538 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3539 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3540 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3541 //45
3542 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3543 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3544 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3545 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3546 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3547 //50
3548 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3549 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3550 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3551 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3552 //54
3553 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3554 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3555 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3556 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3557 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3558 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3559 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3560 { jwin_text_proc, 160, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3561 { jwin_text_proc, 160, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3562 { jwin_text_proc, 160, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3563 //64
3564 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3565 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3566 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3567 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3568 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3569 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3570 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3571 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3572 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3573 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3574 //74
3575 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3576 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Invisible", NULL, NULL },
3577 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3578 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3579 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3580 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3581 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3582 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3583 //82
3584 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3585 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3586 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3587 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3588 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3589 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3590 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3591 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3592 //90
3593 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3594 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3595 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3596 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3597 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3598 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3599 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3600 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3601 //98
3602 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3603 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3604 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3605 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3606 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3607 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3608 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3609 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3610 //106
3611 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3612 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3613 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3614 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3615 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3616 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3617 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3618 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3619 //114
3620 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3621 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3622 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3623 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3624 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3625 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3626 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3627 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3628 //122
3629 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3630 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3631 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3632 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3633 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3634 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3635 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3636 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3637 //130
3638 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3639 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3640 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3641 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3642 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3643 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3644 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3645 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3646 //138
3647 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3648 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3649 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3650 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3651 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3652 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3653 //143 - note: these are defenses 0-16, 17 is at 191
3654 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3655 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3656 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3657 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3658 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3659 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3660 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3661 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3662 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3663 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3664 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3665 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3666 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3667 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3668 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3669 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3670 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3671 //161
3672 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3673 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3674 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3675 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3676 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3677 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3678 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3679 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3680 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3681 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3682 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3683 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3684 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3685 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3686 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3687 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3688 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3689 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3690 //179
3691 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3692 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3693 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3694 //182
3695 { jwin_droplist_proc, 86, 158, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3696 { jwin_droplist_proc, 86, 176, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3697 { jwin_droplist_proc, 86, 194, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3698 { jwin_text_proc, 6, 184, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3699 { jwin_droplist_proc, 86, 180, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3700 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3701 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3702 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3703 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3704
3705 // 191
3706 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Script Weapon Defense:", NULL, NULL },
3707 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3708 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
3709 };
3710 */
3711
3712 static DIALOG enedata_dlg[] =
3713 {
3714 9 { jwin_win_proc, 0, 0, 320, 260, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3715 9 { jwin_tab_proc, 4, 17, 312, 220, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3716 //2
3717 ////tab procs must be listed prior to their elements!
3718 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_defence_tabs, NULL, (void *) enedata_dlg },
3719 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *) enedata_dlg },
3720 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *) enedata_dlg },
3721 // { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
3722
3723 //5
3724 9 { d_dummy_proc, 9904, 32, 1, 1, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3725 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *) enedata_dlg },
3726
3727 //Attributes Tab
3728 // { jwin_button_proc, 86, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3729 // { jwin_button_proc, 166, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3730 //7
3731 9 { jwin_text_proc, 21, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3732 9 { jwin_text_proc, 53, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3733 9 { jwin_text_proc, 92, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3734 9 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3735 9 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3736 //12
3737 9 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3738 9 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3739 9 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3740 9 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3741 //16
3742 9 { jwin_text_proc, 118, 53, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3743 9 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3744 9 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3745 9 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3746 9 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3747 //21
3748 9 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3749 9 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3750 9 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3751 9 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3752 //25
3753 9 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3754 9 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3755 9 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3756 9 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3757 9 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3758 //30
3759 9 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3760 9 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3761 9 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3762 9 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3763 9 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3764 9 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3765 //36
3766 9 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3767 9 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3768 9 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3769 9 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3770 9 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3771 //41
3772 9 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3773 9 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3774 9 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3775 9 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3776 //45
3777 9 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3778 9 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3779 9 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3780 9 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3781 9 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3782 //50
3783 9 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3784 9 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3785 9 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3786 9 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3787 //54
3788 //The tab for these ( npc->Attributes[] ) means that fewer fit. THey need to be rearranged. -Z
3789 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3790 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3791 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3792 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3793 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3794 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3795 9 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3796 9 { jwin_text_proc, 120+40, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3797 9 { jwin_text_proc, 120+40, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3798 9 { jwin_text_proc, 120+40, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3799 //64 : Misc Attribute boxes.
3800 9 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3801 9 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3802 9 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3803 9 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3804 9 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3805 9 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3806 9 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3807 9 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3808 9 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3809 9 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3810 //74
3811 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3812 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Does not draw", NULL, NULL },
3813 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3814 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3815 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3816 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3817 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3818 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3819 //82
3820 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3821 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3822 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3823 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3824 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3825 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3826 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3827 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3828 //90
3829 9 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3830 9 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3831 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3832 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3833 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3834 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3835 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3836 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3837 //98
3838 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3839 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3840 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3841 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3842 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3843 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3844 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3845 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3846 //106
3847 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3848 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3849 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3850 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3851 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3852 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3853 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3854 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3855 //114
3856 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3857 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3858 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3859 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3860 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3861 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3862 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3863 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3864 //122
3865 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3866 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3867 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3868 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3869 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3870 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3871 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3872 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3873 //130
3874 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3875 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3876 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3877 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3878 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3879 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3880 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3881 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3882 //138
3883 9 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3884 9 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3885 9 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3886 9 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3887 //142 timer_proc
3888 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3889 9 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3890 //144 - note: these are defenses 0-16, 17 is at 191
3891 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3892 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3893 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3894 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3895 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3896 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3897 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3898 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3899 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3900 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3901 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3902 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3903 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3904 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3905 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3906 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3907 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3908 //161
3909 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3910 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3911 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3912 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3913 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3914 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3915 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3916 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3917 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3918 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3919 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3920 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3921 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3922 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3923 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3924 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3925 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3926 9 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3927 //179
3928 9 { jwin_text_proc, 8, 161, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3929 9 { jwin_text_proc, 8, 176, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3930 9 { jwin_text_proc, 8, 191, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3931 //182
3932 9 { jwin_droplist_proc, 86, 157, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3933 9 { jwin_droplist_proc, 86, 172, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3934 9 { jwin_droplist_proc, 86, 187, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3935 9 { jwin_text_proc, 6, 214, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3936 9 { jwin_droplist_proc, 86, 210, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3937 //moved to attributes tabs
3938 9 { d_dummy_proc, 160, 126-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3939 9 { d_dummy_proc, 160, 144-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3940 9 { d_dummy_proc, 242, 122-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3941 9 { d_dummy_proc, 242, 140-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3942
3943 // 191
3944 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Whistle Weapon Defense:", NULL, NULL },
3945 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3946 //193 - sccript 1
3947 9 { jwin_text_proc, 6, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 1 Defense:", NULL, NULL },
3948 9 { jwin_text_proc, 6, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 2 Defense:", NULL, NULL },
3949 9 { jwin_text_proc, 6, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 3 Defense:", NULL, NULL },
3950 9 { jwin_text_proc, 6, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 4 Defense:", NULL, NULL },
3951 9 { jwin_text_proc, 6, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 5 Defense:", NULL, NULL },
3952 9 { jwin_text_proc, 6, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 6 Defense:", NULL, NULL },
3953 9 { jwin_text_proc, 6, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 7 Defense:", NULL, NULL },
3954 9 { jwin_text_proc, 6, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 8 Defense:", NULL, NULL },
3955 9 { jwin_text_proc, 6, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 9 Defense:", NULL, NULL },
3956 9 { jwin_text_proc, 6, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 10 Defense:", NULL, NULL },
3957 //203 script 1 pulldown
3958
3959 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
3960 9 { jwin_droplist_proc, 126, 51-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3961 9 { jwin_droplist_proc, 126, 67-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3962 9 { jwin_droplist_proc, 126, 83-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3963 9 { jwin_droplist_proc, 126, 99-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3964 9 { jwin_droplist_proc, 126, 115-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3965 9 { jwin_droplist_proc, 126, 131-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3966 9 { jwin_droplist_proc, 126, 147-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3967 9 { jwin_droplist_proc, 126, 163-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3968 9 { jwin_droplist_proc, 126, 179-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3969 9 { jwin_droplist_proc, 126, 196-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3970 //213 HitWidth and Height
3971 9 { jwin_text_proc, 12, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileWidth:", NULL, NULL },
3972 9 { jwin_edit_proc, 60, 51-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3973 9 { jwin_text_proc, 12, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileHeight:", NULL, NULL },
3974 9 { jwin_edit_proc, 60, 67-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3975 9 { jwin_text_proc, 12, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitWidth:", NULL, NULL },
3976 9 { jwin_edit_proc, 60, 83-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3977 9 { jwin_text_proc, 12, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitHeight:", NULL, NULL },
3978 9 { jwin_edit_proc, 60, 99-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3979 //221 HitZHeight
3980 9 { jwin_text_proc, 12, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitZHeight:", NULL, NULL },
3981 9 { jwin_edit_proc, 60, 115-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3982 //223 HitXOffset
3983 9 { jwin_text_proc, 12, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitXOffset:", NULL, NULL },
3984 9 { jwin_edit_proc, 60, 131-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3985 //225 HitYOffset
3986 9 { jwin_text_proc, 12, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitYOffset:", NULL, NULL },
3987 9 { jwin_edit_proc, 60, 147-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3988 //227 HitZOffset
3989 9 { jwin_text_proc, 12, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawZOffset:", NULL, NULL },
3990 9 { jwin_edit_proc, 60, 163-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3991 //229 DrawXOffset
3992 9 { jwin_text_proc, 12, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawXOffset:", NULL, NULL },
3993 9 { jwin_edit_proc, 60, 179-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3994 //231 DrawYOffset
3995 9 { jwin_text_proc, 12, 195, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawYOffset:", NULL, NULL },
3996 9 { jwin_edit_proc, 60, 195-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3997 //233 'Tiles' annotation.
3998 9 { jwin_text_proc, 96, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
3999 9 { jwin_text_proc, 96, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
4000 //235 : Weapon Sprite Pulldown
4001 9 { jwin_text_proc, 9, 90-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon Sprite:", NULL, NULL },
4002 9 { jwin_droplist_proc, 126, 86-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4003 // { jwin_edit_proc, 86, 189-4+12, 151, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4004 //237 HitWidth Override
4005 9 { jwin_check_proc, 94+50, 83, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4006 //238 HitHeight override
4007 9 { jwin_check_proc, 94+50, 99, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4008 //239 HitZHeight Override
4009 9 { jwin_check_proc, 94+50, 115, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4010 //240 HitXOffset override
4011 9 { jwin_check_proc, 94+50, 131, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4012 //241 HitYOffset Override
4013 9 { jwin_check_proc, 94+50, 147, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4014 //242 DrawZOffset Override
4015 9 { jwin_check_proc, 94+50, 163, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4016 //243 DrawXOffset Override
4017 9 { jwin_check_proc, 94+50, 179, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4018 //244 DrawYOffset Overrife
4019 9 { jwin_check_proc, 94+50, 195, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4020 //245 TileWidth Overrife
4021 9 { jwin_check_proc, 94+50, 51, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4022 //246 TileHeight Overrife
4023 9 { jwin_check_proc, 94+50, 67, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4024 //247, used to be 2
4025 9 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4026 //248 -- used to be 3
4027 9 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4028 //249 used to be 4
4029 9 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4030
4031 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
4032 // 250 Movement tabs
4033 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs , NULL, (void *) enedata_dlg },
4034 //251 Scripts tabs
4035 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs , NULL, (void *) enedata_dlg },
4036 // { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4037 //252 --was 5, OK button.
4038 9 { jwin_button_proc, 86, 240, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
4039 //253 -- CANCEL BUTTON
4040 9 { jwin_button_proc, 166, 240, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
4041 //254
4042 9 { jwin_check_proc, 6, 52, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[0]", NULL, NULL },
4043 9 { jwin_check_proc, 6, 62, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[1]", NULL, NULL },
4044 9 { jwin_check_proc, 6, 72, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[2]", NULL, NULL },
4045 9 { jwin_check_proc, 6, 82, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[3]", NULL, NULL },
4046 9 { jwin_check_proc, 6, 92, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[4]", NULL, NULL },
4047 9 { jwin_check_proc, 6, 102, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[5]", NULL, NULL },
4048 //260
4049 9 { jwin_check_proc, 6, 112, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[6]", NULL, NULL },
4050 9 { jwin_check_proc, 6, 122, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[7]", NULL, NULL },
4051 9 { jwin_check_proc, 6, 132, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[8]", NULL, NULL },
4052 9 { jwin_check_proc, 6, 142, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[9]", NULL, NULL },
4053 9 { jwin_check_proc, 6, 152, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[10]", NULL, NULL },
4054 //265
4055 9 { jwin_check_proc, 6, 162, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[11]", NULL, NULL },
4056 9 { jwin_check_proc, 6, 172, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[12]", NULL, NULL },
4057 9 { jwin_check_proc, 6, 182, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[13]", NULL, NULL },
4058 9 { jwin_check_proc, 6, 192, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[14]", NULL, NULL },
4059 9 { jwin_check_proc, 6, 202, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[15]", NULL, NULL },
4060 //270
4061 //attributes page 1, attrib 1 to 8 move from basic tab?
4062 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[0]", NULL, NULL },
4063 9 { d_dummy_proc, 9970, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[1]", NULL, NULL },
4064 9 { d_dummy_proc, 9970, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[2]", NULL, NULL },
4065 9 { d_dummy_proc, 9970, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[3]", NULL, NULL },
4066 9 { d_dummy_proc, 9970, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[4]", NULL, NULL },
4067 9 { d_dummy_proc, 9970, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[5]", NULL, NULL },
4068 9 { d_dummy_proc, 9970, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[6]", NULL, NULL },
4069 9 { d_dummy_proc, 9970, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[7]", NULL, NULL },
4070 //278 : Misc Attribute boxes.
4071 9 { d_dummy_proc, 9906, 56, 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4072 9 { d_dummy_proc, 9906, 56+(18), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4073 9 { d_dummy_proc, 9906, 56+(18*2), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4074 9 { d_dummy_proc, 9906, 56+(18*3), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4075 9 { d_dummy_proc, 9906, 56+(18*4), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4076 9 { d_dummy_proc, 9906, 56+(18*5), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4077 9 { d_dummy_proc, 9906, 56+(18*6), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4078 9 { d_dummy_proc, 9906, 56+(18*7), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4079 //286
4080 //attributes page 2, attrib 9 to 16
4081 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[8]", NULL, NULL },
4082 9 { d_dummy_proc, 9906, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Lower Attributes are on Basic->Data 2", NULL, NULL },
4083 //288
4084 9 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
4085 9 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
4086 //290
4087 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 13:", NULL, NULL },
4088 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 14:", NULL, NULL },
4089 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 15:", NULL, NULL },
4090 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 16:", NULL, NULL },
4091 //294 : Misc Attribute boxes.
4092 9 { d_dummy_proc, 9986, 56, 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4093 9 { d_dummy_proc, 9986, 56+(18), 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4094 //296
4095 9 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4096 9 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4097 //298
4098 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4099 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4100 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4101 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4102 //302
4103 //attributes page 3, attrib 17 to 24
4104 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 17:", NULL, NULL },
4105 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 18:", NULL, NULL },
4106 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 19:", NULL, NULL },
4107 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 20:", NULL, NULL },
4108 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 21:", NULL, NULL },
4109 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 22:", NULL, NULL },
4110 //308
4111 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 23:", NULL, NULL },
4112 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 24:", NULL, NULL },
4113 //310 : Misc Attribute boxes.
4114 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4115 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4116 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4117 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4118 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4119 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4120 //316
4121 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4122 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4123 //318
4124 //attributes page 4, attrib 25 to 32
4125 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 25:", NULL, NULL },
4126 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 26:", NULL, NULL },
4127 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 27:", NULL, NULL },
4128 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 28:", NULL, NULL },
4129 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 29:", NULL, NULL },
4130 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 30:", NULL, NULL },
4131 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 31:", NULL, NULL },
4132 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 32:", NULL, NULL },
4133 //327 : Misc Attribute boxes.
4134 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4135 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4136 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4137 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4138 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4139 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4140 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4141 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4142 //334
4143 9 { d_dummy_proc, 112+10, 47+38+10 + 18, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Action Script:", NULL, NULL },
4144
4145 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &npcscript_list, NULL, NULL },
4146 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "NPC Action Script:", NULL, NULL },
4147 //337
4148 //npc Script InitD Labels (not editable)
4149 // { jwin_text_proc, 6+10, 10+29+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D0:", NULL, NULL },
4150 // { jwin_text_proc, 6+10, 10+47+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D1:", NULL, NULL },
4151 // { jwin_text_proc, 6+10, 10+65+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D2:", NULL, NULL },
4152 // { jwin_text_proc, 6+10, 10+83+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D3:", NULL, NULL },
4153 // { jwin_text_proc, 6+10, 10+101+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D4:", NULL, NULL },
4154 // { jwin_text_proc, 6+10, 10+119+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D5:", NULL, NULL },
4155 // { jwin_text_proc, 6+10, 10+137+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D6:", NULL, NULL },
4156 // { jwin_text_proc, 6+10, 10+155+20, 24, 12, 0, 0, 0, 0, 0, 0, (void *) "D7:", NULL, NULL },
4157
4158 //editable npc script InitD fields
4159 //337
4160 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*) "InitD[0]", NULL, NULL},
4161 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4162 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4163 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4164 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4165 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4166 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4167 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4168
4169 // { jwin_edit_proc, 6+10, 10+29+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4170 // { jwin_edit_proc, 6+10, 10+47+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4171 // { jwin_edit_proc, 6+10, 10+65+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4172 // { jwin_edit_proc, 6+10, 10+83+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4173 // { jwin_edit_proc, 6+10, 10+101+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4174 // { jwin_edit_proc, 6+10, 10+119+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4175 // { jwin_edit_proc, 6+10, 10+137+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4176 // { jwin_edit_proc, 6+10, 10+155+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4177
4178 //NPC InitD Data fields
4179 //345
4180 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4181 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4182 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4183 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4184 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4185 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4186 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4187 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4188 //353
4189 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[0]", NULL, NULL },
4190 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4191 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4192 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4193 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4194 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4195 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4196 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4197 //361
4198 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4199 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4200 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4201 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4202 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4203 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4204 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4205 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4206 //369
4207 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "EWeapon Script:", NULL, NULL },
4208 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &eweaponscript_list, NULL, NULL },
4209 //371
4210 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Obeys Gravity", NULL, NULL },
4211 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Fall Into Pitfalls", NULL, NULL },
4212 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk Over Pitfalls", NULL, NULL },
4213 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Drown In Liquid", NULL, NULL },
4214 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk On Liquid", NULL, NULL },
4215 /*
4216 // 248 scripts
4217 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs, NULL, (void *)enedata_dlg },
4218 //249 graphics
4219 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *)enedata_dlg },
4220 //250 sounds
4221 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_sounds_tabs, NULL, (void *)enedata_dlg },
4222 //251 basic
4223 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *)enedata_dlg },
4224 //252 attacks
4225 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attacks_tabs, NULL, (void *)enedata_dlg },
4226 //253 movement
4227 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs, NULL, (void *)enedata_dlg },
4228 //254 flags
4229 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *)enedata_dlg },
4230 //255 attributes
4231 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attribs_tabs, NULL, (void *)enedata_dlg },
4232 */
4233 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
4234 //377
4235 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4236 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4237 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4238 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4239 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4240 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4241 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4242 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4243 //385
4244 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4245 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4246 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4247 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4248 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4249 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4250 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4251 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4252 //393
4253 9 { jwin_text_proc, 9, 108-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Shadow Sprite:", NULL, NULL },
4254 9 { jwin_droplist_proc, 126, 104-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4255 9 { jwin_text_proc, 9, 126-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sprite:", NULL, NULL },
4256 9 { jwin_droplist_proc, 126, 122-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4257 9 { jwin_text_proc, 9, 144-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Sprite:", NULL, NULL },
4258 9 { jwin_droplist_proc, 126, 140-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4259 //399
4260 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignores \"Temp No Return\".", NULL, NULL },
4261 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignored by Kill All Enemies effects.", NULL, NULL },
4262 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00040000", NULL, NULL },
4263 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00080000", NULL, NULL },
4264 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00100000", NULL, NULL },
4265 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00200000", NULL, NULL },
4266 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00400000", NULL, NULL },
4267 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00800000", NULL, NULL },
4268 //407
4269 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x01000000", NULL, NULL },
4270 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x02000000", NULL, NULL },
4271 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x04000000", NULL, NULL },
4272 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x08000000", NULL, NULL },
4273 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x10000000", NULL, NULL },
4274 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x20000000", NULL, NULL },
4275 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x40000000", NULL, NULL },
4276 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x80000000", NULL, NULL },
4277 //415
4278 9 { jwin_text_proc, 6, 216, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "SwitchHook Weapon Defense:", NULL, NULL },
4279 9 { jwin_droplist_proc, 126, 216-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
4280 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Liquid", NULL, NULL },
4281 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Shallow Liquid", NULL, NULL },
4282 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Pitfalls", NULL, NULL },
4283 //420
4284 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through solidity", NULL, NULL },
4285 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through No Enemies flags / etc", NULL, NULL },
4286 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through screen edge", NULL, NULL },
4287 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Use 'scripted movement' for engine movement", NULL, NULL },
4288 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Cannot be pushed by moving solid objects", NULL, NULL },
4289 9 { jwin_text_proc, 6, 120, 280, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Below flags only affect scripted movement functions", NULL, NULL },
4290 //NPC Script Help buttons
4291 //426
4292 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4293 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4294 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4295 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4296 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4297 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4298 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4299 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4300 //434
4301 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4302 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4303 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4304 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4305 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4306 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4307 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4308 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4309
4310 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
4311 };
4312
4313
4314 void setEnemyLabels(int32_t family)
4315 {
4316 std::map<int32_t, EnemyNameInfo *> *nmap = getEnemyNameMap();
4317 std::map<int32_t, EnemyNameInfo *>::iterator it = nmap->find(family);
4318 EnemyNameInfo *inf = NULL;
4319
4320 if(it != nmap->end())
4321 inf = it->second;
4322
4323 // Default labels
4324 enedata_dlg[54].dp = (void*)"Misc. Attr. 1:";
4325 enedata_dlg[55].dp = (void*)"Misc. Attr. 2:";
4326 enedata_dlg[56].dp = (void*)"Misc. Attr. 3:";
4327 enedata_dlg[57].dp = (void*)"Misc. Attr. 4:";
4328 enedata_dlg[58].dp = (void*)"Misc. Attr. 5:";
4329 enedata_dlg[59].dp = (void*)"Misc. Attr. 6:";
4330 enedata_dlg[60].dp = (void*)"Misc. Attr. 7:";
4331 enedata_dlg[61].dp = (void*)"Misc. Attr. 8:";
4332 enedata_dlg[62].dp = (void*)"Misc. Attr. 9:";
4333 enedata_dlg[63].dp = (void*)"Misc. Attr. 10:";
4334
4335 if(family==eeKEESE || family==eeGHINI || family==eePEAHAT || family==eeMANHAN
4336 || family==eeGLEEOK || family==eePATRA || family==eeDIG)
4337 enedata_dlg[22].dp = (void*)"Turn Freq.:";
4338 else
4339 enedata_dlg[22].dp = (void*)"Halt Rate:";
4340
4341 //set enemy editor new 2.55 flags 1 to 16 label
4342 for(int32_t i = 0; i < 16; i++)
4343 {
4344 if(inf != NULL)
4345 {
4346 if(inf->flags[i]!=NULL)
4347 {
4348 enedata_dlg[254+i].dp = (char*)inf->flags[i];
4349 }
4350 else
4351 {
4352 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4353 }
4354 }
4355
4356 }
4357
4358 //Enemy Attribute Labels, starting at 11
4359 for ( int32_t q = 10; q < 16; q++ ) //check these numbers! -Z
4360 {
4361 if(inf != NULL && inf->attributes[q]!=NULL)
4362 {
4363 enedata_dlg[288+(q-10)].dp = (char*)inf->attributes[q];
4364 }
4365 if(inf != NULL && inf->list[q] != NULL)
4366 {
4367 enedata_dlg[296+(q-10)].proc = jwin_droplist_proc;
4368 enedata_dlg[296+(q-10)].fg = jwin_pal[jcTEXTFG];
4369 enedata_dlg[296+(q-10)].bg = jwin_pal[jcTEXTBG];
4370 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4371 enedata_dlg[296+(q-10)].dp = inf->list[q];
4372 enedata_dlg[296+(q-10)].dp2 = NULL;
4373 enedata_dlg[296+(q-10)].h = 22;
4374 }
4375 else
4376 {
4377 enedata_dlg[296+(q-10)].proc = jwin_edit_proc;
4378 enedata_dlg[296+(q-10)].fg = vc(14);
4379 enedata_dlg[296+(q-10)].bg = vc(1);
4380 enedata_dlg[296+(q-10)].dp = NULL;
4381 enedata_dlg[296+(q-10)].d1 = 6;
4382 enedata_dlg[296+(q-10)].h = 24;
4383 enedata_dlg[296+(q-10)].dp2 = get_zc_font(font_lfont_l);
4384 }
4385 }
4386 for ( int32_t q = 16; q < 24; q++ ) //check these numbers! -Z
4387 {
4388 if(inf->attributes[q]!=NULL)
4389 {
4390 enedata_dlg[302+(q-16)].dp = (char*)inf->attributes[q];
4391 }
4392 if(inf != NULL && inf->list[q] != NULL)
4393 {
4394 enedata_dlg[310+(q-16)].proc = jwin_droplist_proc;
4395 enedata_dlg[310+(q-16)].fg = jwin_pal[jcTEXTFG];
4396 enedata_dlg[310+(q-16)].bg = jwin_pal[jcTEXTBG];
4397 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4398 enedata_dlg[310+(q-16)].dp = inf->list[q];
4399 enedata_dlg[310+(q-16)].dp2 = NULL;
4400 enedata_dlg[310+(q-16)].h = 22;
4401 }
4402 else
4403 {
4404 enedata_dlg[310+(q-16)].proc = jwin_edit_proc;
4405 enedata_dlg[310+(q-16)].fg = vc(14);
4406 enedata_dlg[310+(q-16)].bg = vc(1);
4407 enedata_dlg[310+(q-16)].dp = NULL;
4408 enedata_dlg[310+(q-16)].d1 = 6;
4409 enedata_dlg[310+(q-16)].h = 24;
4410 enedata_dlg[310+(q-16)].dp2 = get_zc_font(font_lfont_l);
4411 }
4412 }
4413 for ( int32_t q = 24; q < 32; q++ ) //check these numbers! -Z
4414 {
4415 if(inf->attributes[q]!=NULL)
4416 {
4417 enedata_dlg[318+(q-24)].dp = (char*)inf->attributes[q]; //attr err
4418 }
4419 if(inf != NULL && inf->list[q] != NULL)
4420 {
4421 enedata_dlg[326+(q-24)].proc = jwin_droplist_proc;
4422 enedata_dlg[326+(q-24)].fg = jwin_pal[jcTEXTFG];
4423 enedata_dlg[326+(q-24)].bg = jwin_pal[jcTEXTBG];
4424 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4425 enedata_dlg[326+(q-24)].dp = inf->list[q];
4426 enedata_dlg[326+(q-24)].dp2 = NULL;
4427 enedata_dlg[326+(q-24)].h = 22;
4428 }
4429 else
4430 {
4431 enedata_dlg[326+(q-24)].proc = jwin_edit_proc;
4432 enedata_dlg[326+(q-24)].fg = vc(14);
4433 enedata_dlg[326+(q-24)].bg = vc(1);
4434 enedata_dlg[326+(q-24)].dp = NULL;
4435 enedata_dlg[326+(q-24)].d1 = 6;
4436 enedata_dlg[326+(q-24)].h = 24;
4437 enedata_dlg[326+(q-24)].dp2 = get_zc_font(font_lfont_l);
4438 }
4439 }
4440
4441 for(int32_t i = 0; i < 10; i++)
4442 {
4443 if(inf != NULL)
4444 {
4445 if(inf->misc[i]!=NULL)
4446 {
4447 enedata_dlg[54+i].dp = (char*)inf->misc[i];
4448 //enedata_dlg[54+i].flags = enedata_dlg[64+i].flags = 0;
4449 }
4450 else
4451 {
4452 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4453 }
4454 }
4455
4456 if(inf != NULL && inf->list[i] != NULL)
4457 {
4458 enedata_dlg[64+i].proc = jwin_droplist_proc;
4459 enedata_dlg[64+i].fg = jwin_pal[jcTEXTFG];
4460 enedata_dlg[64+i].bg = jwin_pal[jcTEXTBG];
4461 ((ListData*)inf->list[i])->font = (&a4fonts[font_lfont_l]);
4462 enedata_dlg[64+i].dp = inf->list[i];
4463 enedata_dlg[64+i].dp2 = NULL;
4464 enedata_dlg[64+i].h = 22;
4465 }
4466 else
4467 {
4468 enedata_dlg[64+i].proc = jwin_edit_proc;
4469 enedata_dlg[64+i].fg = vc(14);
4470 enedata_dlg[64+i].bg = vc(1);
4471 enedata_dlg[64+i].dp = NULL;
4472 enedata_dlg[64+i].d1 = 6;
4473 enedata_dlg[64+i].h = 24;
4474 enedata_dlg[64+i].dp2 = get_zc_font(font_lfont_l);
4475 }
4476 }
4477
4478 bool r = 0 != get_qr(qr_NEWENEMYTILES);
4479 enedata_dlg[r ? 47 : 48].flags |= D_DISABLED;
4480 enedata_dlg[r ? 48 : 47].flags &= ~D_DISABLED;
4481 enedata_dlg[r ? 140 : 141].flags |= D_DISABLED;
4482 enedata_dlg[r ? 141 : 140].flags &= ~D_DISABLED;
4483
4484 if(family==eeTRAP || family==eeROCK || family==eeDONGO ) //|| family==eeGANON)
4485 {
4486 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags |= D_DISABLED;
4487
4488 enedata_dlg[192].flags |= D_DISABLED; //Defenses disabled for Traps. rocks,. Dodongos and Ganon.
4489 //We will need to remove Ganon from this list once we give him defence properties in the EE. -Z
4490
4491 enedata_dlg[203].d1 |= D_DISABLED;
4492 enedata_dlg[204].d1 |= D_DISABLED;
4493 enedata_dlg[205].d1 |= D_DISABLED;
4494 enedata_dlg[206].d1 |= D_DISABLED;
4495 enedata_dlg[207].d1 |= D_DISABLED;
4496 enedata_dlg[208].d1 |= D_DISABLED;
4497 enedata_dlg[209].d1 |= D_DISABLED;
4498 enedata_dlg[210].d1 |= D_DISABLED;
4499 enedata_dlg[211].d1 |= D_DISABLED;
4500 enedata_dlg[212].d1 |= D_DISABLED;
4501 }
4502 else
4503 {
4504 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags &= ~D_DISABLED;
4505
4506 enedata_dlg[192].flags &= ~D_DISABLED;
4507 enedata_dlg[203].d1 &= ~D_DISABLED;
4508 enedata_dlg[204].d1 &= ~D_DISABLED;
4509 enedata_dlg[205].d1 &= ~D_DISABLED;
4510 enedata_dlg[206].d1 &= ~D_DISABLED;
4511 enedata_dlg[207].d1 &= ~D_DISABLED;
4512 enedata_dlg[208].d1 &= ~D_DISABLED;
4513 enedata_dlg[209].d1 &= ~D_DISABLED;
4514 enedata_dlg[210].d1 &= ~D_DISABLED;
4515 enedata_dlg[211].d1 &= ~D_DISABLED;
4516 enedata_dlg[212].d1 &= ~D_DISABLED;
4517 }
4518
4519 if(!(family==eeWALK || family==eeFIRE || family==eeOTHER))
4520 {
4521 enedata_dlg[98].flags |= D_DISABLED;
4522 enedata_dlg[99].flags |= D_DISABLED;
4523 enedata_dlg[100].flags |= D_DISABLED;
4524 enedata_dlg[101].flags |= D_DISABLED;
4525 enedata_dlg[102].flags |= D_DISABLED;
4526 enedata_dlg[186].flags |= D_DISABLED;
4527 }
4528 else
4529 {
4530 enedata_dlg[98].flags &= ~D_DISABLED;
4531 enedata_dlg[99].flags &= ~D_DISABLED;
4532 enedata_dlg[100].flags &= ~D_DISABLED;
4533 enedata_dlg[101].flags &= ~D_DISABLED;
4534 enedata_dlg[102].flags &= ~D_DISABLED;
4535 enedata_dlg[186].flags &= ~D_DISABLED;
4536 }
4537 }
4538
4539 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c)
4540 {
4541 //these are here to bypass compiler warnings about unused arguments
4542 c=c;
4543 int32_t *tempint=enedata_flags2_list;
4544 tempint=tempint;
4545
4546 switch(msg)
4547 {
4548 case MSG_CLICK:
4549 {
4550 int32_t f = -8; // Suppress Flip, but in a way that the lowest 3 bits are 0. (Trust me here.) -L
4551 int32_t t = d->d1;
4552 int32_t cs = d->d2;
4553
4554 if((CHECK_CTRL_CMD)
4555 ? select_tile_2(t,f,1,cs,true)
4556 : select_tile(t,f,1,cs,true))
4557 {
4558 d->d1 = t;
4559 enedata_dlg[247].d2 = cs;
4560 enedata_dlg[248].d2 = cs;
4561 enedata_dlg[249].d2 = cs;
4562 return D_REDRAW;
4563 }
4564 }
4565 break;
4566
4567 case MSG_DRAW:
4568 d->w = 36;
4569 d->h = 36;
4570
4571 BITMAP *buf = create_bitmap_ex(8,20,20);
4572 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
4573
4574 if(buf && bigbmp)
4575 {
4576 clear_bitmap(buf);
4577
4578 if(d->d1)
4579 overtile16(buf,d->d1,2,2,d->d2,0);
4580
4581 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-3, d->h-3);
4582 destroy_bitmap(buf);
4583 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
4584 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
4585 destroy_bitmap(bigbmp);
4586 }
4587
4588 // text_mode(d->bg);
4589 break;
4590 }
4591
4592 return D_O_K;
4593 }
4594
4595 void setEnemyScriptLabels(const guydata& test, char (&npc_initd_labels)[8][65], char (&weapon_initd_labels)[8][65])
4596 {
4597 for (int32_t q = 0; q < 8; ++q)
4598 {
4599 sprintf(npc_initd_labels[q], "InitD[%d]", q);
4600 sprintf(weapon_initd_labels[q], "InitD[%d]", q);
4601 enedata_dlg[345 + q].d1 &= ~0xF;
4602 enedata_dlg[345 + q].d1 |= nswapDEC;
4603 enedata_dlg[361 + q].d1 &= ~0xF;
4604 enedata_dlg[361 + q].d1 |= nswapDEC;
4605 enedata_dlg[426 + q].flags |= D_DISABLED;
4606 enedata_dlg[434 + q].flags |= D_DISABLED;
4607 }
4608
4609 if (test.script)
4610 {
4611 zasm_meta const& meta = guyscripts[test.script]->meta;
4612 for (int32_t q = 0; q < 8; ++q)
4613 {
4614 if (!meta.initd[q].empty())
4615 snprintf(npc_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4616 if(!meta.initd_help[q].empty())
4617 enedata_dlg[426 + q].flags &= ~D_DISABLED;
4618 DIALOG* swapbtn = (DIALOG*)enedata_dlg[345 + q].dp3;
4619 if(meta.initd_type[q]>-1)
4620 {
4621 swapbtn->d1 &= ~0xF;
4622 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4623 }
4624 }
4625 }
4626
4627 if (test.weaponscript)
4628 {
4629 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4630 for (int32_t q = 0; q < 8; ++q)
4631 {
4632 if(!meta.initd[q].empty())
4633 snprintf(weapon_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4634 if (!meta.initd_help[q].empty())
4635 enedata_dlg[434 + q].flags &= ~D_DISABLED;
4636 DIALOG* swapbtn = (DIALOG*)enedata_dlg[361 + q].dp3;
4637 if (meta.initd_type[q] > -1)
4638 {
4639 swapbtn->d1 &= ~0xF;
4640 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4641 }
4642 }
4643 }
4644 }
4645
4646 void showEnemyScriptMetaHelp(const guydata& test, int32_t i)
4647 {
4648 if (i < 8)
4649 {
4650 if (test.script)
4651 {
4652 zasm_meta const& meta = guyscripts[test.script]->meta;
4653 if(!meta.initd_help[i].empty())
4654 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4655 }
4656 }
4657 else
4658 {
4659 i -= 8;
4660 if (test.weaponscript)
4661 {
4662 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4663 if (!meta.initd_help[i].empty())
4664 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4665 }
4666 }
4667 }
4668
4669 void edit_enemydata(int32_t index)
4670 {
4671 //guysbuf[index].script = 1;
4672 char hp[8], dp[8], wdp[8], rat[8], hrt[8], hom[8], grm[8], spd[8],
4673 frt[8], efr[8], bsp[8];
4674 char w[8],h[8],sw[8],sh[8],ew[8],eh[8];
4675 char name[64];
4676 char attribs[32][8];
4677 char enemynumstr[75];
4678 char hitx[8], hity[8], hitz[8], tiley[8], tilex[8], hitofsx[8], hitofsy[8], hitofsz[8], drawofsx[8], drawofsy[8];
4679 char npc_initd_labels[8][65];
4680 char weapon_initd_labels[8][65];
4681 char weap_initdvals[8][13];
4682
4683 char initdvals[8][13];
4684 //begin npc script
4685 int32_t j = 0; build_binpcs_list(); //npc scripts lister
4686 for(j = 0; j < binpcs_cnt; j++)
4687 {
4688 if(binpcs[j].second == guysbuf[index].script -1)
4689 {
4690 enedata_dlg[335].d1 = j;
4691 break;
4692 }
4693 }
4694
4695 int32_t j2 = 0;
4696 build_bieweapons_list(); //lweapon scripts lister
4697 for(j2 = 0; j2 < bieweapons_cnt; j2++)
4698 {
4699 if(bieweapons[j2].second == guysbuf[index].weaponscript -1)
4700 {
4701 enedata_dlg[370].d1 = j2;
4702 break;
4703 }
4704 }
4705
4706 for ( int32_t q = 0; q < 8; q++ )
4707 {
4708 //NPC InitD / WeaponInitD
4709 enedata_dlg[345+q].dp = initdvals[q];
4710 enedata_dlg[361+q].dp = weap_initdvals[q];
4711 enedata_dlg[345+q].fg = guysbuf[index].initD[q];
4712 enedata_dlg[361+q].fg = guysbuf[index].weap_initiald[q];
4713 enedata_dlg[345+q].dp3 = &(enedata_dlg[377+q]);
4714 enedata_dlg[361+q].dp3 = &(enedata_dlg[385+q]);
4715
4716 //InitD Labels
4717 enedata_dlg[337 + q].dp = npc_initd_labels[q];
4718 enedata_dlg[353 + q].dp = weapon_initd_labels[q];
4719 }
4720
4721 //end npc script
4722
4723 //disable the missing dialog items!
4724 //else they will lurk in the background
4725 //stealing mouse focus -DD
4726 for(int32_t i=0; enedata_flags2_list[i] != -1; i++)
4727 {
4728 enedata_dlg[enedata_flags2_list[i]].proc = d_dummy_proc;
4729 enedata_dlg[enedata_flags2_list[i]].x = 0;
4730 enedata_dlg[enedata_flags2_list[i]].y = 0;
4731 enedata_dlg[enedata_flags2_list[i]].w = 0;
4732 enedata_dlg[enedata_flags2_list[i]].h = 0;
4733 }
4734
4735 sprintf(enemynumstr,"Enemy %d: %s", index, guy_string[index]);
4736 enedata_dlg[0].dp = enemynumstr;
4737 enedata_dlg[0].dp2 = get_zc_font(font_lfont);
4738 enedata_dlg[247].d1 = guysbuf[index].tile;
4739 enedata_dlg[247].d2 = guysbuf[index].cset;
4740 enedata_dlg[248].d1 = guysbuf[index].s_tile;
4741 enedata_dlg[248].d2 = guysbuf[index].cset;
4742 enedata_dlg[249].d1 = guysbuf[index].e_tile;
4743 enedata_dlg[249].d2 = guysbuf[index].cset;
4744
4745 // Enemy weapon list
4746 if(guysbuf[index].weapon==wNone)
4747 {
4748 enedata_dlg[45].d1 = 0;
4749 }
4750 else
4751 {
4752 if(biew_cnt==-1)
4753 {
4754 build_biew_list();
4755 }
4756
4757 for(int32_t j=0; j<biew_cnt; j++)
4758 {
4759 if(biew[j].i == guysbuf[index].weapon /*- wEnemyWeapons*/)
4760 enedata_dlg[45].d1 = j;
4761 }
4762 }
4763
4764 // Enemy family list
4765 if(bief_cnt==-1)
4766 {
4767 build_bief_list();
4768 }
4769
4770 for(int32_t j=0; j<bief_cnt; j++)
4771 {
4772 if(bief[j].i == guysbuf[index].family)
4773 enedata_dlg[46].d1 = j;
4774 }
4775
4776 // Enemy animation list
4777 if(biea_cnt==-1)
4778 {
4779 build_biea_list();
4780 }
4781
4782 for(int32_t j=0; j<biea_cnt; j++)
4783 {
4784 if(biea[j].i == guysbuf[index].anim)
4785 enedata_dlg[47].d1 = j;
4786
4787 if(biea[j].i == guysbuf[index].e_anim)
4788 enedata_dlg[48].d1 = j;
4789 }
4790
4791
4792 enedata_dlg[49].d1 = guysbuf[index].item_set;
4793
4794 sprintf(w,"%d",guysbuf[index].width);
4795 sprintf(h,"%d",guysbuf[index].height);
4796 sprintf(sw,"%d",guysbuf[index].s_width);
4797 sprintf(sh,"%d",guysbuf[index].s_height);
4798 sprintf(ew,"%d",guysbuf[index].e_width);
4799 sprintf(eh,"%d",guysbuf[index].e_height);
4800 enedata_dlg[30].dp = w;
4801 enedata_dlg[31].dp = h;
4802 enedata_dlg[32].dp = sw;
4803 enedata_dlg[33].dp = sh;
4804 enedata_dlg[34].dp = ew;
4805 enedata_dlg[35].dp = eh;
4806
4807 sprintf(hp,"%d",guysbuf[index].hp);
4808 sprintf(dp,"%d",guysbuf[index].dp);
4809 sprintf(wdp,"%d",guysbuf[index].wdp);
4810 sprintf(grm,"%d",guysbuf[index].grumble);
4811 enedata_dlg[37].dp = hp;
4812 enedata_dlg[38].dp = dp;
4813 enedata_dlg[39].dp = wdp;
4814 enedata_dlg[40].dp = grm;
4815
4816 sprintf(rat,"%d",guysbuf[index].rate);
4817 sprintf(hrt,"%d",guysbuf[index].hrate);
4818 sprintf(hom,"%d",guysbuf[index].homing);
4819 sprintf(spd,"%d",guysbuf[index].step);
4820 enedata_dlg[41].dp = rat;
4821 enedata_dlg[42].dp = hrt;
4822 enedata_dlg[43].dp = hom;
4823 enedata_dlg[44].dp = spd;
4824
4825 sprintf(name,"%s",guy_string[index]);
4826 enedata_dlg[36].dp = name;
4827
4828 for (int q = 0; q < 32; ++q)
4829 {
4830 sprintf(attribs[q], "%d", guysbuf[index].attributes[q]);
4831 }
4832
4833
4834 for(int32_t j=0; j <= edefBYRNA; j++)
4835 {
4836 enedata_dlg[j+161].d1 = guysbuf[index].defense[j];
4837 }
4838
4839 enedata_dlg[192].d1 = guysbuf[index].defense[edefWhistle];
4840 enedata_dlg[416].d1 = guysbuf[index].defense[edefSwitchHook];
4841
4842
4843 //Script Defenses
4844 enedata_dlg[203].d1 = guysbuf[index].defense[edefSCRIPT01];
4845 enedata_dlg[204].d1 = guysbuf[index].defense[edefSCRIPT02];
4846 enedata_dlg[205].d1 = guysbuf[index].defense[edefSCRIPT03];
4847 enedata_dlg[206].d1 = guysbuf[index].defense[edefSCRIPT04];
4848 enedata_dlg[207].d1 = guysbuf[index].defense[edefSCRIPT05];
4849 enedata_dlg[208].d1 = guysbuf[index].defense[edefSCRIPT06];
4850 enedata_dlg[209].d1 = guysbuf[index].defense[edefSCRIPT07];
4851 enedata_dlg[210].d1 = guysbuf[index].defense[edefSCRIPT08];
4852 enedata_dlg[211].d1 = guysbuf[index].defense[edefSCRIPT09];
4853 enedata_dlg[212].d1 = guysbuf[index].defense[edefSCRIPT10];
4854
4855 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
4856 sprintf(tilex,"%d",guysbuf[index].txsz);
4857 sprintf(tiley,"%d",guysbuf[index].tysz);
4858 sprintf(hitx,"%d",guysbuf[index].hxsz);
4859 sprintf(hity,"%d",guysbuf[index].hysz);
4860 sprintf(hitz,"%d",guysbuf[index].hzsz);
4861
4862 enedata_dlg[214].dp = tilex;
4863 enedata_dlg[216].dp = tiley;
4864 enedata_dlg[218].dp = hitx;
4865 enedata_dlg[220].dp = hity;
4866 enedata_dlg[222].dp = hitz;
4867
4868 //HitXOffset, HitYOFfset, hitZOffset, DrawXOffsrt, DrawYOffset
4869 sprintf(hitofsx,"%d",guysbuf[index].hxofs);
4870 sprintf(hitofsy,"%d",guysbuf[index].hyofs);
4871 sprintf(hitofsz,"%d",guysbuf[index].zofs);
4872 sprintf(drawofsx,"%d",guysbuf[index].xofs);
4873 sprintf(drawofsy,"%d",guysbuf[index].yofs); //This seems to be setting to +48 or something with any value set?! -Z
4874
4875 enedata_dlg[224].dp = hitofsx;
4876 enedata_dlg[226].dp = hitofsy;
4877 enedata_dlg[228].dp = hitofsz;
4878 enedata_dlg[230].dp = drawofsx;
4879 enedata_dlg[232].dp = drawofsy; //This seems to be setting to +48 or something with any value set?! -Z
4880
4881 //Override flags
4882 enedata_dlg[237].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_WIDTH) ? D_SELECTED : 0;
4883 enedata_dlg[238].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_HEIGHT) ? D_SELECTED : 0;
4884 enedata_dlg[239].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Z_HEIGHT) ? D_SELECTED : 0;
4885 enedata_dlg[240].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_X_OFFSET) ? D_SELECTED : 0;
4886 enedata_dlg[241].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Y_OFFSET) ? D_SELECTED : 0;
4887 enedata_dlg[242].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Z_OFFSET) ? D_SELECTED : 0;
4888 enedata_dlg[243].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_X_OFFSET) ? D_SELECTED : 0;
4889 enedata_dlg[244].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Y_OFFSET) ? D_SELECTED : 0;
4890 enedata_dlg[245].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_WIDTH) ? D_SELECTED : 0;
4891 enedata_dlg[246].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_HEIGHT) ? D_SELECTED : 0;
4892
4893 //New Misc FLags (2.55, flag1 to flag16)
4894 enedata_dlg[254].flags = (guysbuf[index].editorflags&ENEMY_FLAG1) ? D_SELECTED : 0;
4895 enedata_dlg[255].flags = (guysbuf[index].editorflags&ENEMY_FLAG2) ? D_SELECTED : 0;
4896 enedata_dlg[256].flags = (guysbuf[index].editorflags&ENEMY_FLAG3) ? D_SELECTED : 0;
4897 enedata_dlg[257].flags = (guysbuf[index].editorflags&ENEMY_FLAG4) ? D_SELECTED : 0;
4898 enedata_dlg[258].flags = (guysbuf[index].editorflags&ENEMY_FLAG5) ? D_SELECTED : 0;
4899 enedata_dlg[259].flags = (guysbuf[index].editorflags&ENEMY_FLAG6) ? D_SELECTED : 0;
4900 enedata_dlg[260].flags = (guysbuf[index].editorflags&ENEMY_FLAG7) ? D_SELECTED : 0;
4901 enedata_dlg[261].flags = (guysbuf[index].editorflags&ENEMY_FLAG8) ? D_SELECTED : 0;
4902 enedata_dlg[262].flags = (guysbuf[index].editorflags&ENEMY_FLAG9) ? D_SELECTED : 0;
4903 enedata_dlg[263].flags = (guysbuf[index].editorflags&ENEMY_FLAG10) ? D_SELECTED : 0;
4904 enedata_dlg[264].flags = (guysbuf[index].editorflags&ENEMY_FLAG11) ? D_SELECTED : 0;
4905 enedata_dlg[265].flags = (guysbuf[index].editorflags&ENEMY_FLAG12) ? D_SELECTED : 0;
4906 enedata_dlg[266].flags = (guysbuf[index].editorflags&ENEMY_FLAG13) ? D_SELECTED : 0;
4907 enedata_dlg[267].flags = (guysbuf[index].editorflags&ENEMY_FLAG14) ? D_SELECTED : 0;
4908 enedata_dlg[268].flags = (guysbuf[index].editorflags&ENEMY_FLAG15) ? D_SELECTED : 0;
4909 enedata_dlg[269].flags = (guysbuf[index].editorflags&ENEMY_FLAG16) ? D_SELECTED : 0;
4910
4911
4912 sprintf(frt,"%d",guysbuf[index].frate);
4913 sprintf(efr,"%d",guysbuf[index].e_frate);
4914 enedata_dlg[140].dp = frt;
4915 enedata_dlg[141].dp = efr;
4916
4917 //sprintf(sfx,"%d",guysbuf[index].bgsfx);
4918 enedata_dlg[182].d1= (int32_t)guysbuf[index].bgsfx;
4919 enedata_dlg[183].d1= (int32_t)guysbuf[index].hitsfx;
4920 if ( ( enedata_dlg[183].d1 == 0 ) && FFCore.getQuestHeaderInfo(vZelda) < 0x250 || (( FFCore.getQuestHeaderInfo(vZelda) == 0x250 ) && FFCore.getQuestHeaderInfo(vBuild) < 32 ) )
4921 {
4922 //If no user-set hit sound was in place, and the quest was made in a version before 2.53.0 Gamma 2:
4923 enedata_dlg[183].d1 = WAV_EHIT; //Fix quests using the wrong hit sound when loading this.
4924 //Force SFX_HIT here.
4925
4926 }
4927 enedata_dlg[184].d1= (int32_t)guysbuf[index].deadsfx;
4928
4929 // Sprites
4930 if(biw_cnt==-1)
4931 {
4932 build_biw_list();
4933 }
4934 for(int32_t j=0; j<biw_cnt; j++)
4935 {
4936 if(biw[j].i == guysbuf[index].wpnsprite)
4937 enedata_dlg[236].d1 = j;
4938 if(biw[j].i == guysbuf[index].spr_shadow)
4939 enedata_dlg[394].d1 = j;
4940 if(biw[j].i == guysbuf[index].spr_death)
4941 enedata_dlg[396].d1 = j;
4942 if(biw[j].i == guysbuf[index].spr_spawn)
4943 enedata_dlg[398].d1 = j;
4944 }
4945
4946 sprintf(bsp,"%d",guysbuf[index].bosspal);
4947
4948 if(guysbuf[index].cset == 14)
4949 {
4950 enedata_dlg[143].flags = D_SELECTED;
4951 }
4952 else
4953 {
4954 enedata_dlg[143].flags = 0;
4955 }
4956
4957 enedata_dlg[53].dp = bsp;
4958
4959 for(int32_t i=0; i<32; i++)
4960 enedata_dlg[74+i].flags = (guysbuf[index].flags & LLF(i)) ? D_SELECTED : 0;
4961
4962 enedata_dlg[186].d1 = (guysbuf[index].flags & guy_fade_instant ? 2
4963 : guysbuf[index].flags & guy_fade_flicker ? 1 : 0);
4964
4965 for(int32_t i=0; i<16; i++)
4966 enedata_dlg[106+i].flags = (guysbuf[index].flags & LLF(i+32)) ? D_SELECTED : 0;
4967
4968 for(int32_t i=0; i<16; i++)
4969 enedata_dlg[399+i].flags = (guysbuf[index].flags & LLF(i+32+16)) ? D_SELECTED : 0;
4970
4971 enedata_dlg[371].flags = (guysbuf[index].moveflags & move_obeys_grav) ? D_SELECTED : 0;
4972 enedata_dlg[372].flags = (guysbuf[index].moveflags & move_can_pitfall) ? D_SELECTED : 0;
4973 enedata_dlg[373].flags = (guysbuf[index].moveflags & move_can_pitwalk) ? D_SELECTED : 0;
4974 enedata_dlg[374].flags = (guysbuf[index].moveflags & move_can_waterdrown) ? D_SELECTED : 0;
4975 enedata_dlg[375].flags = (guysbuf[index].moveflags & move_can_waterwalk) ? D_SELECTED : 0;
4976 enedata_dlg[417].flags = (guysbuf[index].moveflags & move_only_waterwalk) ? D_SELECTED : 0;
4977 enedata_dlg[418].flags = (guysbuf[index].moveflags & move_only_shallow_waterwalk) ? D_SELECTED : 0;
4978 enedata_dlg[419].flags = (guysbuf[index].moveflags & move_only_pitwalk) ? D_SELECTED : 0;
4979 enedata_dlg[420].flags = (guysbuf[index].moveflags & move_ignore_solidity) ? D_SELECTED : 0;
4980 enedata_dlg[421].flags = (guysbuf[index].moveflags & move_ignore_blockflags) ? D_SELECTED : 0;
4981 enedata_dlg[422].flags = (guysbuf[index].moveflags & move_ignore_screenedge) ? D_SELECTED : 0;
4982 enedata_dlg[423].flags = (guysbuf[index].moveflags & move_new_movement) ? D_SELECTED : 0;
4983 enedata_dlg[424].flags = (guysbuf[index].moveflags & move_not_pushable) ? D_SELECTED : 0;
4984
4985 int32_t ret;
4986 guydata test;
4987 memset(&test, 0, sizeof(guydata));
4988
4989 large_dialog(enedata_dlg);
4990
4991 setEnemyLabels(guysbuf[index].family);
4992 setEnemyScriptLabels(guysbuf[index], npc_initd_labels, weapon_initd_labels);
4993
4994 popup_zqdialog_start();
4995 do
4996 {
4997 for(int32_t i=0; i<10; i++)
4998 {
4999 if(enedata_dlg[64+i].proc==jwin_droplist_proc)
5000 {
5001 int32_t size = 0;
5002 ((ListData*)enedata_dlg[64+i].dp)->listFunc(-1,&size);
5003 sprintf(attribs[i],"%d",vbound(atoi(attribs[i]), 0, size));
5004 enedata_dlg[64+i].d1 = atoi(attribs[i]);
5005 }
5006 else
5007 enedata_dlg[64+i].dp = attribs[i];
5008 }
5009 for ( int32_t q = 10; q < 16; q++ )
5010 {
5011 if (enedata_dlg[296+(q-10)].proc == jwin_droplist_proc)
5012 {
5013 int32_t size = 0;
5014 ((ListData*)enedata_dlg[296+(q-10)].dp)->listFunc(-1,&size);
5015 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5016 enedata_dlg[296+(q-10)].d1 = atoi(attribs[q]);
5017 }
5018 else
5019 enedata_dlg[296+(q-10)].dp = attribs[q];
5020 }
5021 for ( int32_t q = 16; q < 24; q++ )
5022 {
5023 if (enedata_dlg[310+(q-16)].proc == jwin_droplist_proc)
5024 {
5025 int32_t size = 0;
5026 ((ListData*)enedata_dlg[310+(q-16)].dp)->listFunc(-1,&size);
5027 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5028 enedata_dlg[310+(q-16)].d1 = atoi(attribs[q]);
5029 }
5030 else
5031 enedata_dlg[310+(q-16)].dp = attribs[q];
5032 }
5033 for ( int32_t q = 24; q < 32; q++ )
5034 {
5035 if (enedata_dlg[326+(q-24)].proc == jwin_droplist_proc)
5036 {
5037 int32_t size = 0;
5038 ((ListData*)enedata_dlg[326+(q-24)].dp)->listFunc(-1,&size);
5039 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5040 enedata_dlg[326+(q-24)].d1 = atoi(attribs[q]);
5041 }
5042 else
5043 enedata_dlg[326+(q-24)].dp = attribs[q];
5044 }
5045
5046 enedata_dlg[278].dp = attribs[0];
5047 enedata_dlg[279].dp = attribs[1];
5048 enedata_dlg[280].dp = attribs[2];
5049 enedata_dlg[281].dp = attribs[3];
5050 enedata_dlg[282].dp = attribs[4];
5051 enedata_dlg[283].dp = attribs[5];
5052 enedata_dlg[284].dp = attribs[6];
5053 enedata_dlg[285].dp = attribs[7];
5054
5055 enedata_dlg[294].dp = attribs[8];
5056 enedata_dlg[295].dp = attribs[9];
5057
5058 enedata_dlg[296].dp = attribs[10];
5059 enedata_dlg[297].dp = attribs[11];
5060 enedata_dlg[298].dp = attribs[12];
5061 enedata_dlg[299].dp = attribs[13];
5062 enedata_dlg[300].dp = attribs[14];
5063 enedata_dlg[301].dp = attribs[15];
5064
5065 enedata_dlg[310].dp = attribs[16];
5066 enedata_dlg[311].dp = attribs[17];
5067 enedata_dlg[312].dp = attribs[18];
5068 enedata_dlg[313].dp = attribs[19];
5069 enedata_dlg[314].dp = attribs[20];
5070 enedata_dlg[315].dp = attribs[21];
5071 enedata_dlg[316].dp = attribs[22];
5072 enedata_dlg[317].dp = attribs[23];
5073
5074 enedata_dlg[326].dp = attribs[24];
5075 enedata_dlg[327].dp = attribs[25];
5076 enedata_dlg[328].dp = attribs[26];
5077 enedata_dlg[329].dp = attribs[27];
5078 enedata_dlg[330].dp = attribs[28];
5079 enedata_dlg[331].dp = attribs[29];
5080 enedata_dlg[332].dp = attribs[30];
5081 enedata_dlg[333].dp = attribs[31];
5082
5083 ret = do_zqdialog(enedata_dlg,3);
5084
5085
5086
5087 test.tile = enedata_dlg[247].d1;
5088 test.cset = enedata_dlg[247].d2;
5089 test.s_tile = enedata_dlg[248].d1;
5090 test.e_tile = enedata_dlg[249].d1;
5091
5092 test.width = vbound(atoi(w),0,20);
5093 test.height = vbound(atoi(h),0,20);
5094 test.s_width = vbound(atoi(sw),0,20);
5095 test.s_height = vbound(atoi(sh),0,20);
5096 test.e_width = vbound(atoi(ew),0,20);
5097 test.e_height = vbound(atoi(eh),0,20);
5098
5099 test.weapon = enedata_dlg[45].d1 != 0 ? biew[enedata_dlg[45].d1].i /*+ wEnemyWeapons*/ : wNone;
5100 test.family = bief[enedata_dlg[46].d1].i;
5101 test.anim = biea[enedata_dlg[47].d1].i;
5102 test.e_anim = biea[enedata_dlg[48].d1].i;
5103 test.item_set = enedata_dlg[49].d1;
5104
5105 test.hp = vbound(atoi(hp), 0, 32767); //0x7FFF, not 0xFFFF?
5106 test.dp = vbound(atoi(dp), 0, 32767);
5107 test.wdp = vbound(atoi(wdp), 0, 32767);
5108 test.grumble = vbound(atoi(grm), -4, 4);
5109
5110 test.rate = vbound(atoi(rat), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5111 test.hrate = vbound(atoi(hrt), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5112 test.homing = vbound(atoi(hom), -256, (test.family == eeFIRE || test.family == eeOTHER)?32767:256);
5113 test.step = vbound(atoi(spd),0, (test.family == eeFIRE || test.family == eeOTHER)?32767:1000);
5114
5115 test.frate = vbound(atoi(frt),0,256);
5116 test.e_frate = vbound(atoi(efr),0,256);
5117 test.bosspal = vbound(atoi(bsp),-1,29);
5118 test.bgsfx = enedata_dlg[182].d1;
5119 test.hitsfx = enedata_dlg[183].d1;
5120 test.deadsfx = enedata_dlg[184].d1;
5121
5122 // Sprites
5123 for(int32_t j=0; j<biw_cnt; j++)
5124 {
5125 if(enedata_dlg[236].d1 == j)
5126 test.wpnsprite = biw[j].i;
5127 if(enedata_dlg[394].d1 == j)
5128 test.spr_shadow = biw[j].i;
5129 if(enedata_dlg[396].d1 == j)
5130 test.spr_death = biw[j].i;
5131 if(enedata_dlg[398].d1 == j)
5132 test.spr_spawn = biw[j].i;
5133 }
5134
5135 test.attributes[0] = (enedata_dlg[64].proc == jwin_droplist_proc) ? enedata_dlg[64].d1 : atol(attribs[0]);
5136 test.attributes[1] = (enedata_dlg[65].proc==jwin_droplist_proc) ? enedata_dlg[65].d1 : atol(attribs[1]);
5137 test.attributes[2] = (enedata_dlg[66].proc==jwin_droplist_proc) ? enedata_dlg[66].d1 : atol(attribs[2]);
5138 test.attributes[3] = (enedata_dlg[67].proc==jwin_droplist_proc) ? enedata_dlg[67].d1 : atol(attribs[3]);
5139 test.attributes[4] = (enedata_dlg[68].proc==jwin_droplist_proc) ? enedata_dlg[68].d1 : atol(attribs[4]);
5140 test.attributes[5] = (enedata_dlg[69].proc==jwin_droplist_proc) ? enedata_dlg[69].d1 : atol(attribs[5]);
5141 test.attributes[6] = (enedata_dlg[70].proc==jwin_droplist_proc) ? enedata_dlg[70].d1 : atol(attribs[6]);
5142 test.attributes[7] = (enedata_dlg[71].proc==jwin_droplist_proc) ? enedata_dlg[71].d1 : atol(attribs[7]);
5143 test.attributes[8] = (enedata_dlg[72].proc==jwin_droplist_proc) ? enedata_dlg[72].d1 : atol(attribs[8]);
5144 test.attributes[9] = (enedata_dlg[73].proc==jwin_droplist_proc) ? enedata_dlg[73].d1 : atol(attribs[9]);
5145 test.attributes[10] = (enedata_dlg[296].proc==jwin_droplist_proc) ? enedata_dlg[296].d1 : atol(attribs[10]);
5146 test.attributes[11] = (enedata_dlg[297].proc==jwin_droplist_proc) ? enedata_dlg[297].d1 : atol(attribs[11]);
5147 test.attributes[12] = (enedata_dlg[298].proc==jwin_droplist_proc) ? enedata_dlg[298].d1 : atol(attribs[12]);
5148 test.attributes[13] = (enedata_dlg[299].proc==jwin_droplist_proc) ? enedata_dlg[299].d1 : atol(attribs[13]);
5149 test.attributes[14] = (enedata_dlg[300].proc==jwin_droplist_proc) ? enedata_dlg[300].d1 : atol(attribs[14]);
5150 test.attributes[15] = (enedata_dlg[301].proc==jwin_droplist_proc) ? enedata_dlg[301].d1 : atol(attribs[15]);
5151 test.attributes[16] = (enedata_dlg[310].proc==jwin_droplist_proc) ? enedata_dlg[310].d1 : atol(attribs[16]);
5152 test.attributes[17] = (enedata_dlg[311].proc==jwin_droplist_proc) ? enedata_dlg[311].d1 : atol(attribs[17]);
5153 test.attributes[18] = (enedata_dlg[312].proc==jwin_droplist_proc) ? enedata_dlg[312].d1 : atol(attribs[18]);
5154 test.attributes[19] = (enedata_dlg[313].proc==jwin_droplist_proc) ? enedata_dlg[313].d1 : atol(attribs[19]);
5155 test.attributes[20] = (enedata_dlg[314].proc==jwin_droplist_proc) ? enedata_dlg[314].d1 : atol(attribs[20]);
5156 test.attributes[21] = (enedata_dlg[315].proc==jwin_droplist_proc) ? enedata_dlg[315].d1 : atol(attribs[21]);
5157 test.attributes[22] = (enedata_dlg[316].proc==jwin_droplist_proc) ? enedata_dlg[316].d1 : atol(attribs[22]);
5158 test.attributes[23] = (enedata_dlg[317].proc==jwin_droplist_proc) ? enedata_dlg[317].d1 : atol(attribs[23]);
5159 test.attributes[24] = (enedata_dlg[326].proc==jwin_droplist_proc) ? enedata_dlg[326].d1 : atol(attribs[24]);
5160 test.attributes[25] = (enedata_dlg[327].proc==jwin_droplist_proc) ? enedata_dlg[327].d1 : atol(attribs[25]);
5161 test.attributes[26] = (enedata_dlg[328].proc==jwin_droplist_proc) ? enedata_dlg[328].d1 : atol(attribs[26]);
5162 test.attributes[27] = (enedata_dlg[329].proc==jwin_droplist_proc) ? enedata_dlg[329].d1 : atol(attribs[27]);
5163 test.attributes[28] = (enedata_dlg[330].proc==jwin_droplist_proc) ? enedata_dlg[330].d1 : atol(attribs[28]);
5164 test.attributes[29] = (enedata_dlg[331].proc==jwin_droplist_proc) ? enedata_dlg[331].d1 : atol(attribs[29]);
5165 test.attributes[30] = (enedata_dlg[332].proc==jwin_droplist_proc) ? enedata_dlg[332].d1 : atol(attribs[30]);
5166 test.attributes[31] = (enedata_dlg[333].proc==jwin_droplist_proc) ? enedata_dlg[333].d1 : atol(attribs[31]);
5167
5168
5169
5170 for(int32_t j=0; j <= edefBYRNA; j++)
5171 {
5172 test.defense[j] = enedata_dlg[j+161].d1;
5173 }
5174
5175 test.defense[edefWhistle] = enedata_dlg[192].d1;
5176 test.defense[edefSwitchHook] = enedata_dlg[416].d1;
5177 //Are the new defs missing here? -Z
5178
5179
5180 for(int32_t i=0; i<32; i++)
5181 test.flags |= (guy_flags)((enedata_dlg[74+i].flags & D_SELECTED) ? LLF(i) : 0);
5182
5183 test.flags &= ~(guy_fade_instant|guy_fade_flicker);
5184 test.flags |= (guy_flags)(enedata_dlg[186].d1==2 ? guy_fade_instant : enedata_dlg[186].d1==1 ? guy_fade_flicker : 0);
5185
5186 for(int32_t i=0; i<16; i++)
5187 test.flags |= (guy_flags)((enedata_dlg[106+i].flags & D_SELECTED) ? LLF(i+32) : 0);
5188
5189 for(int32_t i=0; i<16; i++)
5190 test.flags |= (guy_flags)((enedata_dlg[399+i].flags & D_SELECTED) ? LLF(i+32+16) : 0);
5191
5192 if(enedata_dlg[143].flags & D_SELECTED)
5193 {
5194 test.cset = 14;
5195 }
5196 //if we disable the box, revert to cset 8 -Z.
5197 else if(guysbuf[index].cset == 14 || test.cset == 14)
5198 {
5199 test.cset = 8;
5200 }
5201 test.defense[edefSCRIPT01] = enedata_dlg[203].d1;
5202 test.defense[edefSCRIPT02] = enedata_dlg[204].d1;
5203 test.defense[edefSCRIPT03] = enedata_dlg[205].d1;
5204 test.defense[edefSCRIPT04] = enedata_dlg[206].d1;
5205 test.defense[edefSCRIPT05] = enedata_dlg[207].d1;
5206 test.defense[edefSCRIPT06] = enedata_dlg[208].d1;
5207 test.defense[edefSCRIPT07] = enedata_dlg[209].d1;
5208 test.defense[edefSCRIPT08] = enedata_dlg[210].d1;
5209 test.defense[edefSCRIPT09] = enedata_dlg[211].d1;
5210 test.defense[edefSCRIPT10] = enedata_dlg[212].d1;
5211
5212 //tilewidth, tileheight, hitwidth, hitheight,
5213 test.txsz = atoi(tilex);
5214 test.tysz = atoi(tiley);
5215 test.hxsz = atoi(hitx);
5216 test.hysz = atoi(hity);
5217 test.hzsz = atoi(hitz);
5218 test.hxofs = atoi(hitofsx);
5219 test.hyofs = atoi(hitofsy);
5220 test.zofs = atoi(hitofsz);
5221 test.xofs = atoi(drawofsx);
5222 test.yofs = atoi(drawofsy); //This seems to be setting to +48 or something with any value set?! -Z
5223
5224 //override flags
5225 if(enedata_dlg[237].flags & D_SELECTED)
5226 test.SIZEflags |= guyflagOVERRIDE_HIT_WIDTH;
5227
5228 if(enedata_dlg[238].flags & D_SELECTED)
5229 test.SIZEflags |= guyflagOVERRIDE_HIT_HEIGHT;
5230
5231 if(enedata_dlg[239].flags & D_SELECTED)
5232 test.SIZEflags |= guyflagOVERRIDE_HIT_Z_HEIGHT;
5233
5234 if(enedata_dlg[240].flags & D_SELECTED)
5235 test.SIZEflags |= guyflagOVERRIDE_HIT_X_OFFSET;
5236
5237 if(enedata_dlg[241].flags & D_SELECTED)
5238 test.SIZEflags |= guyflagOVERRIDE_HIT_Y_OFFSET;
5239
5240 if(enedata_dlg[242].flags & D_SELECTED)
5241 test.SIZEflags |= guyflagOVERRIDE_DRAW_Z_OFFSET;
5242 if(enedata_dlg[243].flags & D_SELECTED)
5243 test.SIZEflags |= guyflagOVERRIDE_DRAW_X_OFFSET;
5244
5245 if(enedata_dlg[244].flags & D_SELECTED)
5246 test.SIZEflags |= guyflagOVERRIDE_DRAW_Y_OFFSET;
5247 if(enedata_dlg[245].flags & D_SELECTED)
5248 test.SIZEflags |= guyflagOVERRIDE_TILE_WIDTH;
5249 if(enedata_dlg[246].flags & D_SELECTED)
5250 test.SIZEflags |= guyflagOVERRIDE_TILE_HEIGHT;
5251
5252 //new 2.55 misc flags 1 to 16
5253 if(enedata_dlg[254].flags & D_SELECTED)
5254 test.editorflags |= ENEMY_FLAG1;
5255 if(enedata_dlg[255].flags & D_SELECTED)
5256 test.editorflags |= ENEMY_FLAG2;
5257 if(enedata_dlg[256].flags & D_SELECTED)
5258 test.editorflags |= ENEMY_FLAG3;
5259 if(enedata_dlg[257].flags & D_SELECTED)
5260 test.editorflags |= ENEMY_FLAG4;
5261 if(enedata_dlg[258].flags & D_SELECTED)
5262 test.editorflags |= ENEMY_FLAG5;
5263 if(enedata_dlg[259].flags & D_SELECTED)
5264 test.editorflags |= ENEMY_FLAG6;
5265 if(enedata_dlg[260].flags & D_SELECTED)
5266 test.editorflags |= ENEMY_FLAG7;
5267 if(enedata_dlg[261].flags & D_SELECTED)
5268 test.editorflags |= ENEMY_FLAG8;
5269 if(enedata_dlg[262].flags & D_SELECTED)
5270 test.editorflags |= ENEMY_FLAG9;
5271 if(enedata_dlg[263].flags & D_SELECTED)
5272 test.editorflags |= ENEMY_FLAG10;
5273 if(enedata_dlg[264].flags & D_SELECTED)
5274 test.editorflags |= ENEMY_FLAG11;
5275 if(enedata_dlg[265].flags & D_SELECTED)
5276 test.editorflags |= ENEMY_FLAG12;
5277 if(enedata_dlg[266].flags & D_SELECTED)
5278 test.editorflags |= ENEMY_FLAG13;
5279 if(enedata_dlg[267].flags & D_SELECTED)
5280 test.editorflags |= ENEMY_FLAG14;
5281 if(enedata_dlg[268].flags & D_SELECTED)
5282 test.editorflags |= ENEMY_FLAG15;
5283 if(enedata_dlg[269].flags & D_SELECTED)
5284 test.editorflags |= ENEMY_FLAG16;
5285
5286 //begin npc scripts
5287 test.script = binpcs[enedata_dlg[335].d1].second + 1;
5288 for ( int32_t q = 0; q < 8; q++ )
5289 {
5290 test.initD[q] = enedata_dlg[345+q].fg;
5291 test.weap_initiald[q] = enedata_dlg[361+q].fg;
5292 }
5293 //eweapon script
5294 test.weaponscript = bieweapons[enedata_dlg[370].d1].second + 1;
5295
5296 test.moveflags = move_none;
5297 if(enedata_dlg[371].flags & D_SELECTED)
5298 test.moveflags |= move_obeys_grav;
5299 if(enedata_dlg[372].flags & D_SELECTED)
5300 test.moveflags |= move_can_pitfall;
5301 if(enedata_dlg[373].flags & D_SELECTED)
5302 test.moveflags |= move_can_pitwalk;
5303 if(enedata_dlg[374].flags & D_SELECTED)
5304 test.moveflags |= move_can_waterdrown;
5305 if(enedata_dlg[375].flags & D_SELECTED)
5306 test.moveflags |= move_can_waterwalk;
5307 if(enedata_dlg[417].flags & D_SELECTED)
5308 test.moveflags |= move_only_waterwalk;
5309 if(enedata_dlg[418].flags & D_SELECTED)
5310 test.moveflags |= move_only_shallow_waterwalk;
5311 if(enedata_dlg[419].flags & D_SELECTED)
5312 test.moveflags |= move_only_pitwalk;
5313 if(enedata_dlg[420].flags & D_SELECTED)
5314 test.moveflags |= move_ignore_solidity;
5315 if(enedata_dlg[421].flags & D_SELECTED)
5316 test.moveflags |= move_ignore_blockflags;
5317 if(enedata_dlg[422].flags & D_SELECTED)
5318 test.moveflags |= move_ignore_screenedge;
5319 if(enedata_dlg[423].flags & D_SELECTED)
5320 test.moveflags |= move_new_movement;
5321 if(enedata_dlg[424].flags & D_SELECTED)
5322 test.moveflags |= move_not_pushable;
5323
5324 //end npc scripts
5325
5326 if(ret==252) //OK Button
5327 {
5328 strcpy(guy_string[index],name);
5329 guysbuf[index] = test;
5330 saved = false;
5331 }
5332 else if(ret==46)
5333 {
5334 setEnemyLabels(bief[enedata_dlg[46].d1].i);
5335 }
5336 else if(ret==178)
5337 {
5338 for(int32_t j=1; j <= edefBYRNA; j++)
5339 {
5340 enedata_dlg[j+161].d1 = enedata_dlg[161].d1;
5341 }
5342
5343 enedata_dlg[192].d1 = enedata_dlg[161].d1;
5344 //Clear to 0
5345 enedata_dlg[203].d1 = enedata_dlg[161].d1;
5346 enedata_dlg[204].d1 = enedata_dlg[161].d1;
5347 enedata_dlg[205].d1 = enedata_dlg[161].d1;
5348 enedata_dlg[206].d1 = enedata_dlg[161].d1;
5349 enedata_dlg[207].d1 = enedata_dlg[161].d1;
5350 enedata_dlg[208].d1 = enedata_dlg[161].d1;
5351 enedata_dlg[209].d1 = enedata_dlg[161].d1;
5352 enedata_dlg[210].d1 = enedata_dlg[161].d1;
5353 enedata_dlg[211].d1 = enedata_dlg[161].d1;
5354 enedata_dlg[212].d1 = enedata_dlg[161].d1;
5355 }
5356 else if (ret == 335 || ret == 370) // Script dropdowns
5357 {
5358 setEnemyScriptLabels(test, npc_initd_labels, weapon_initd_labels);
5359 }
5360 else if (ret >= 426 && ret <= 441) // InitD help buttons
5361 {
5362 showEnemyScriptMetaHelp(test, ret - 426);
5363 }
5364 }
5365 //252 == OK button, 253 == Cancel Button
5366 while(ret != 252 && ret != 253 && ret != 0);
5367 popup_zqdialog_end();
5368 }
5369
5370 extern DIALOG elist_dlg[];
5371 static int32_t copiedGuy;
5372
5373 int32_t readonenpc(PACKFILE *f, int32_t index)
5374 {
5375 dword section_version = 0;
5376 dword section_cversion = 0;
5377 int32_t zversion = 0;
5378 int32_t zbuild = 0;
5379 guydata tempguy;
5380 memset(&tempguy, 0, sizeof(guydata));
5381 //reset_itembuf(&tempitem,i);
5382
5383
5384 char npcstring[64]={0}; //guy_string[]
5385 //section version info
5386 if(!p_igetl(&zversion,f))
5387 {
5388 return 0;
5389 }
5390 if(!p_igetl(&zbuild,f))
5391 {
5392 return 0;
5393 }
5394
5395 if(!p_igetw(&section_version,f))
5396 {
5397 return 0;
5398 }
5399
5400 if(!p_igetw(&section_cversion,f))
5401 {
5402 return 0;
5403 }
5404 al_trace("readonenpc section_version: %d\n", section_version);
5405 al_trace("readonenpc section_cversion: %d\n", section_cversion);
5406
5407 if ( zversion > ZELDA_VERSION )
5408 {
5409 al_trace("Cannot read .znpc packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
5410 return 0;
5411 }
5412 else if ( ( section_version > V_GUYS ) || ( section_version == V_GUYS && section_cversion < CV_GUYS ) )
5413 {
5414 al_trace("Cannot read .znpc packfile made using V_GUYS (%d) subversion (%d)\n", section_version, section_cversion);
5415 return 0;
5416
5417 }
5418 else
5419 {
5420 al_trace("Reading a .znpc packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
5421 }
5422
5423 if(!pfread(&npcstring, 64, f))
5424 {
5425 return 0;
5426 }
5427
5428 //section data
5429 uint32_t flags1;
5430 uint32_t flags2;
5431 if (!p_igetl(&(flags1), f))
5432 {
5433 return qe_invalid;
5434 }
5435 if (!p_igetl(&(flags2), f))
5436 {
5437 return qe_invalid;
5438 }
5439 tempguy.flags = guy_flags(flags1) | guy_flags(uint64_t(flags2) << 32ULL);
5440
5441 if(!p_igetl(&tempguy.tile,f))
5442 {
5443 return 0;
5444 }
5445
5446 if(!p_getc(&tempguy.width,f))
5447 {
5448 return 0;
5449 }
5450
5451 if(!p_getc(&tempguy.height,f))
5452 {
5453 return 0;
5454 }
5455
5456 if(!p_igetl(&tempguy.s_tile,f))
5457 {
5458 return 0;
5459 }
5460
5461 if(!p_getc(&tempguy.s_width,f))
5462 {
5463 return 0;
5464 }
5465
5466 if(!p_getc(&tempguy.s_height,f))
5467 {
5468 return 0;
5469 }
5470
5471 if(!p_igetl(&tempguy.e_tile,f))
5472 {
5473 return 0;
5474 }
5475
5476 if(!p_getc(&tempguy.e_width,f))
5477 {
5478 return 0;
5479 }
5480
5481 if(!p_getc(&tempguy.e_height,f))
5482 {
5483 return 0;
5484 }
5485
5486 if(!p_igetw(&tempguy.hp,f))
5487 {
5488 return 0;
5489 }
5490
5491 if(!p_igetw(&tempguy.family,f))
5492 {
5493 return 0;
5494 }
5495
5496 if(!p_igetw(&tempguy.cset,f))
5497 {
5498 return 0;
5499 }
5500
5501 if(!p_igetw(&tempguy.anim,f))
5502 {
5503 return 0;
5504 }
5505
5506 if(!p_igetw(&tempguy.e_anim,f))
5507 {
5508 return 0;
5509 }
5510
5511 if(!p_igetw(&tempguy.frate,f))
5512 {
5513 return 0;
5514 }
5515
5516 if(!p_igetw(&tempguy.e_frate,f))
5517 {
5518 return 0;
5519 }
5520
5521 if(!p_igetw(&tempguy.dp,f))
5522 {
5523 return 0;
5524 }
5525
5526 if(!p_igetw(&tempguy.wdp,f))
5527 {
5528 return 0;
5529 }
5530
5531 if(!p_igetw(&tempguy.weapon,f))
5532 {
5533 return 0;
5534 }
5535
5536 if(!p_igetw(&tempguy.rate,f))
5537 {
5538 return 0;
5539 }
5540
5541 if(!p_igetw(&tempguy.hrate,f))
5542 {
5543 return 0;
5544 }
5545
5546 if(!p_igetw(&tempguy.step,f))
5547 {
5548 return 0;
5549 }
5550
5551 if(!p_igetw(&tempguy.homing,f))
5552 {
5553 return 0;
5554 }
5555
5556 if(!p_igetw(&tempguy.grumble,f))
5557 {
5558 return 0;
5559 }
5560
5561 if(!p_igetw(&tempguy.item_set,f))
5562 {
5563 return 0;
5564 }
5565
5566 if(!p_igetw(&tempguy.bgsfx,f))
5567 {
5568 return 0;
5569 }
5570
5571 if(!p_igetw(&tempguy.bosspal,f))
5572 {
5573 return 0;
5574 }
5575
5576 if(!p_igetw(&tempguy.extend,f))
5577 {
5578 return 0;
5579 }
5580
5581 for(int32_t j=0; j < edefLAST; j++)
5582 {
5583 if(!p_getc(&tempguy.defense[j],f))
5584 {
5585 return 0;
5586 }
5587 }
5588
5589 if(!p_getc(&tempguy.hitsfx,f))
5590 {
5591 return 0;
5592 }
5593
5594 if(!p_getc(&tempguy.deadsfx,f))
5595 {
5596 return 0;
5597 }
5598
5599 if(!p_igetl(&tempguy.attributes[10],f))
5600 {
5601 return 0;
5602 }
5603
5604 if(!p_igetl(&tempguy.attributes[11],f))
5605 {
5606 return 0;
5607 }
5608
5609 if ( zversion >= 0x255 )
5610 {
5611 if ( section_version >= 41 )
5612 {
5613 //New itemdata vars -Z
5614 //! version 27
5615
5616 //2.55 starts here
5617 for(int32_t j=edefLAST; j < edefLAST255; j++)
5618 {
5619 if(!p_getc(&tempguy.defense[j],f))
5620 {
5621 return 0;
5622 }
5623 }
5624
5625 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5626 if(!p_igetl(&tempguy.txsz,f))
5627 {
5628 return 0;
5629 }
5630 if(!p_igetl(&tempguy.tysz,f))
5631 {
5632 return 0;
5633 }
5634 if(!p_igetl(&tempguy.hxsz,f))
5635 {
5636 return 0;
5637 }
5638 if(!p_igetl(&tempguy.hysz,f))
5639 {
5640 return 0;
5641 }
5642 if(!p_igetl(&tempguy.hzsz,f))
5643 {
5644 return 0;
5645 }
5646 // These are not fixed types, but ints, so they are safe to use here.
5647 if(!p_igetl(&tempguy.hxofs,f))
5648 {
5649 return 0;
5650 }
5651 if(!p_igetl(&tempguy.hyofs,f))
5652 {
5653 return 0;
5654 }
5655 if(!p_igetl(&tempguy.xofs,f))
5656 {
5657 return 0;
5658 }
5659 if(!p_igetl(&tempguy.yofs,f))
5660 {
5661 return 0;
5662 }
5663 if(!p_igetl(&tempguy.zofs,f))
5664 {
5665 return 0;
5666 }
5667 if(!p_igetl(&tempguy.wpnsprite,f))
5668 {
5669 return 0;
5670 }
5671 if(!p_igetl(&tempguy.SIZEflags,f))
5672 {
5673 return 0;
5674 }
5675 if(!p_igetl(&tempguy.frozentile,f))
5676 {
5677 return 0;
5678 }
5679 if(!p_igetl(&tempguy.frozencset,f))
5680 {
5681 return 0;
5682 }
5683 if(!p_igetl(&tempguy.frozenclock,f))
5684 {
5685 return 0;
5686 }
5687
5688 for ( int32_t q = 0; q < 10; q++ )
5689 {
5690 if(!p_igetw(&tempguy.frozenmisc[q],f))
5691 {
5692 return 0;
5693 }
5694 }
5695 if(!p_igetw(&tempguy.firesfx,f))
5696 {
5697 return 0;
5698 }
5699 for (int32_t q = 0; q < 32; q++)
5700 {
5701 if(!p_igetl(&tempguy.movement[q],f))
5702 {
5703 return 0;
5704 }
5705 }
5706 for ( int32_t q = 0; q < 32; q++ )
5707 {
5708 if(!p_igetl(&tempguy.new_weapon[q],f))
5709 {
5710 return 0;
5711 }
5712 }
5713 if(!p_igetw(&tempguy.script,f))
5714 {
5715 return 0;
5716 }
5717 for ( int32_t q = 0; q < 8; q++ )
5718 {
5719 if(!p_igetl(&tempguy.initD[q],f))
5720 {
5721 return 0;
5722 }
5723 }
5724 for ( int32_t q = 0; q < 2; q++ )
5725 {
5726 if(!p_igetl(&tempguy.initA[q],f))
5727 {
5728 return 0;
5729 }
5730 }
5731 if(!p_igetl(&tempguy.editorflags,f))
5732 {
5733 return 0;
5734 }
5735
5736 //Enemy Editor InitD[] labels
5737 for ( int32_t q = 0; q < 8; q++ )
5738 {
5739 for ( int32_t w = 0; w < 65; w++ )
5740 {
5741 if(!p_getc(&tempguy.initD_label[q][w],f))
5742 {
5743 return 0;
5744 }
5745 }
5746 for ( int32_t w = 0; w < 65; w++ )
5747 {
5748 if(!p_getc(&tempguy.weapon_initD_label[q][w],f))
5749 {
5750 return 0;
5751 }
5752 }
5753 }
5754 if(!p_igetw(&tempguy.weaponscript,f))
5755 {
5756 return 0;
5757 }
5758 //eweapon initD
5759 for ( int32_t q = 0; q < 8; q++ )
5760 {
5761 if(!p_igetl(&tempguy.weap_initiald[q],f))
5762 {
5763 return 0;
5764 }
5765 }
5766 //enemy editor misc merge
5767 for (int32_t q = 0; q < 32; q++)
5768 {
5769 if (!p_igetl(&tempguy.attributes[q], f)) return 0;
5770 }
5771 }
5772 }
5773 memcpy(&guysbuf[index], &tempguy, sizeof(guydata));
5774 //strcpy(item_string[index], istring);
5775 guysbuf[bie[index].i] = tempguy;
5776 strcpy(guy_string[bie[index].i], npcstring);
5777
5778 return 1;
5779 }
5780
5781 int32_t writeonenpc(PACKFILE *f, int32_t i)
5782 {
5783
5784 dword section_version=V_GUYS;
5785 dword section_cversion=CV_GUYS;
5786 int32_t zversion = ZELDA_VERSION;
5787 int32_t zbuild = VERSION_BUILD;
5788
5789
5790 //section version info
5791 if(!p_iputl(zversion,f))
5792 {
5793 return 0;
5794 }
5795 if(!p_iputl(zbuild,f))
5796 {
5797 return 0;
5798 }
5799 if(!p_iputw(section_version,f))
5800 {
5801 new_return(2);
5802 }
5803
5804 if(!p_iputw(section_cversion,f))
5805 {
5806 new_return(3);
5807 }
5808
5809 if(!pfwrite(guy_string[i], 64, f))
5810 {
5811 new_return(5);
5812 }
5813
5814 uint32_t flags1 = uint32_t(guysbuf[i].flags);
5815 uint32_t flags2 = uint32_t(guysbuf[i].flags >> 32ULL);
5816 if (!p_iputl(flags1, f))
5817 {
5818 return 0;
5819 }
5820 if (!p_iputl(flags2, f))
5821 {
5822 return 0;
5823 }
5824
5825 if(!p_iputl(guysbuf[i].tile,f))
5826 {
5827 return 0;
5828 }
5829
5830 if(!p_putc(guysbuf[i].width,f))
5831 {
5832 return 0;
5833 }
5834
5835 if(!p_putc(guysbuf[i].height,f))
5836 {
5837 return 0;
5838 }
5839
5840 if(!p_iputl(guysbuf[i].s_tile,f))
5841 {
5842 return 0;
5843 }
5844
5845 if(!p_putc(guysbuf[i].s_width,f))
5846 {
5847 return 0;
5848 }
5849
5850 if(!p_putc(guysbuf[i].s_height,f))
5851 {
5852 return 0;
5853 }
5854
5855 if(!p_iputl(guysbuf[i].e_tile,f))
5856 {
5857 return 0;
5858 }
5859
5860 if(!p_putc(guysbuf[i].e_width,f))
5861 {
5862 return 0;
5863 }
5864
5865 if(!p_putc(guysbuf[i].e_height,f))
5866 {
5867 return 0;
5868 }
5869
5870 if(!p_iputw(guysbuf[i].hp,f))
5871 {
5872 return 0;
5873 }
5874
5875 if(!p_iputw(guysbuf[i].family,f))
5876 {
5877 return 0;
5878 }
5879
5880 if(!p_iputw(guysbuf[i].cset,f))
5881 {
5882 return 0;
5883 }
5884
5885 if(!p_iputw(guysbuf[i].anim,f))
5886 {
5887 return 0;
5888 }
5889
5890 if(!p_iputw(guysbuf[i].e_anim,f))
5891 {
5892 return 0;
5893 }
5894
5895 if(!p_iputw(guysbuf[i].frate,f))
5896 {
5897 return 0;
5898 }
5899
5900 if(!p_iputw(guysbuf[i].e_frate,f))
5901 {
5902 return 0;
5903 }
5904
5905 if(!p_iputw(guysbuf[i].dp,f))
5906 {
5907 return 0;
5908 }
5909
5910 if(!p_iputw(guysbuf[i].wdp,f))
5911 {
5912 return 0;
5913 }
5914
5915 if(!p_iputw(guysbuf[i].weapon,f))
5916 {
5917 return 0;
5918 }
5919
5920 if(!p_iputw(guysbuf[i].rate,f))
5921 {
5922 return 0;
5923 }
5924
5925 if(!p_iputw(guysbuf[i].hrate,f))
5926 {
5927 return 0;
5928 }
5929
5930 if(!p_iputw(guysbuf[i].step,f))
5931 {
5932 return 0;
5933 }
5934
5935 if(!p_iputw(guysbuf[i].homing,f))
5936 {
5937 return 0;
5938 }
5939
5940 if(!p_iputw(guysbuf[i].grumble,f))
5941 {
5942 return 0;
5943 }
5944
5945 if(!p_iputw(guysbuf[i].item_set,f))
5946 {
5947 return 0;
5948 }
5949
5950 if(!p_iputw(guysbuf[i].bgsfx,f))
5951 {
5952 return 0;
5953 }
5954
5955 if(!p_iputw(guysbuf[i].bosspal,f))
5956 {
5957 return 0;
5958 }
5959
5960 if(!p_iputw(guysbuf[i].extend,f))
5961 {
5962 return 0;
5963 }
5964
5965 for(int32_t j=0; j < edefLAST; j++)
5966 {
5967 if(!p_putc(guysbuf[i].defense[j],f))
5968 {
5969 return 0;
5970 }
5971 }
5972
5973 if(!p_putc(guysbuf[i].hitsfx,f))
5974 {
5975 return 0;
5976 }
5977
5978 if(!p_putc(guysbuf[i].deadsfx,f))
5979 {
5980 return 0;
5981 }
5982
5983 //2.55 starts here
5984 for(int32_t j=edefLAST; j < edefLAST255; j++)
5985 {
5986 if(!p_putc(guysbuf[i].defense[j],f))
5987 {
5988 return 0;
5989 }
5990 }
5991
5992 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5993 if(!p_iputl(guysbuf[i].txsz,f))
5994 {
5995 return 0;
5996 }
5997 if(!p_iputl(guysbuf[i].tysz,f))
5998 {
5999 return 0;
6000 }
6001 if(!p_iputl(guysbuf[i].hxsz,f))
6002 {
6003 return 0;
6004 }
6005 if(!p_iputl(guysbuf[i].hysz,f))
6006 {
6007 return 0;
6008 }
6009 if(!p_iputl(guysbuf[i].hzsz,f))
6010 {
6011 return 0;
6012 }
6013 // These are not fixed types, but ints, so they are safe to use here.
6014 if(!p_iputl(guysbuf[i].hxofs,f))
6015 {
6016 return 0;
6017 }
6018 if(!p_iputl(guysbuf[i].hyofs,f))
6019 {
6020 return 0;
6021 }
6022 if(!p_iputl(guysbuf[i].xofs,f))
6023 {
6024 return 0;
6025 }
6026 if(!p_iputl(guysbuf[i].yofs,f))
6027 {
6028 return 0;
6029 }
6030 if(!p_iputl(guysbuf[i].zofs,f))
6031 {
6032 return 0;
6033 }
6034 if(!p_iputl(guysbuf[i].wpnsprite,f))
6035 {
6036 return 0;
6037 }
6038 if(!p_iputl(guysbuf[i].SIZEflags,f))
6039 {
6040 return 0;
6041 }
6042 if(!p_iputl(guysbuf[i].frozentile,f))
6043 {
6044 return 0;
6045 }
6046 if(!p_iputl(guysbuf[i].frozencset,f))
6047 {
6048 return 0;
6049 }
6050 if(!p_iputl(guysbuf[i].frozenclock,f))
6051 {
6052 return 0;
6053 }
6054
6055 for ( int32_t q = 0; q < 10; q++ )
6056 {
6057 if(!p_iputw(guysbuf[i].frozenmisc[q],f))
6058 {
6059 return 0;
6060 }
6061 }
6062 if(!p_iputw(guysbuf[i].firesfx,f))
6063 {
6064 return 0;
6065 }
6066 for ( int32_t q = 0; q < 32; q++ )
6067 {
6068 if(!p_iputl(guysbuf[i].movement[q],f))
6069 {
6070 return 0;
6071 }
6072 }
6073 for ( int32_t q = 0; q < 32; q++ )
6074 {
6075 if(!p_iputl(guysbuf[i].new_weapon[q],f))
6076 {
6077 return 0;
6078 }
6079 }
6080 if(!p_iputw(guysbuf[i].script,f))
6081 {
6082 return 0;
6083 }
6084 for ( int32_t q = 0; q < 8; q++ )
6085 {
6086 if(!p_iputl(guysbuf[i].initD[q],f))
6087 {
6088 return 0;
6089 }
6090 }
6091 for ( int32_t q = 0; q < 2; q++ )
6092 {
6093 if(!p_iputl(guysbuf[i].initA[q],f))
6094 {
6095 return 0;
6096 }
6097 }
6098 if(!p_iputl(guysbuf[i].editorflags,f))
6099 {
6100 return 0;
6101 }
6102
6103 //Enemy Editor InitD[] labels
6104 for ( int32_t q = 0; q < 8; q++ )
6105 {
6106 for ( int32_t w = 0; w < 65; w++ )
6107 {
6108 if(!p_putc(guysbuf[i].initD_label[q][w],f))
6109 {
6110 return 0;
6111 }
6112 }
6113 for ( int32_t w = 0; w < 65; w++ )
6114 {
6115 if(!p_putc(guysbuf[i].weapon_initD_label[q][w],f))
6116 {
6117 return 0;
6118 }
6119 }
6120 }
6121 if(!p_iputw(guysbuf[i].weaponscript,f))
6122 {
6123 return 0;
6124 }
6125 //eweapon initD
6126 for ( int32_t q = 0; q < 8; q++ )
6127 {
6128 if(!p_iputl(guysbuf[i].weap_initiald[q],f))
6129 {
6130 return 0;
6131 }
6132 }
6133 //enemy editor misc merge
6134 for (int32_t q = 0; q < 32; q++)
6135 {
6136 if (!p_iputl(guysbuf[i].attributes[q], f))
6137 {
6138 return 0;
6139 }
6140 }
6141 return 1;
6142 }
6143
6144
6145
6146
6147
6148
6149 void paste_enemy(int32_t index)
6150 {
6151 if(index < 0) index = elist_dlg[2].d1;
6152 if(index==0)
6153 return;
6154 if(copiedGuy<0) //Nothing copied
6155 return;
6156 guysbuf[bie[index].i]=guysbuf[copiedGuy];
6157 elist_dlg[2].flags|=D_DIRTY;
6158 saved=false;
6159 }
6160 void copy_enemy(int32_t index)
6161 {
6162 if(index < 0) index = elist_dlg[2].d1;
6163 if(index==0)
6164 return;
6165 copiedGuy=bie[index].i;
6166 }
6167 void save_enemy(int32_t index)
6168 {
6169 if(index < 0) index = elist_dlg[2].d1;
6170 if(index==0)
6171 return;
6172 if(!prompt_for_new_file_compat("Save NPC(.znpc)", "znpc", NULL,datapath,false))
6173 return;
6174 int32_t iid = bie[index].i;
6175
6176 PACKFILE *f=pack_fopen_password(temppath,F_WRITE, "");
6177 if(!f) return;
6178 if (!writeonenpc(f,iid))
6179 {
6180 Z_error("Could not write to .znpc packfile %s\n", temppath);
6181 InfoDialog("ZNPC Error", "Could not save the specified enemy.").show();
6182 }
6183 pack_fclose(f);
6184 }
6185 void load_enemy(int32_t index)
6186 {
6187 if(index < 0) index = elist_dlg[2].d1;
6188 if(index==0)
6189 return;
6190 if(!prompt_for_existing_file_compat("Load NPC(.znpc)", "znpc", NULL,datapath,false))
6191 return;
6192 PACKFILE *f=pack_fopen_password(temppath,F_READ, "");
6193 if(!f) return;
6194
6195 if (!readonenpc(f,index))
6196 {
6197 al_trace("Could not read from .znpc packfile %s\n", temppath);
6198 InfoDialog("ZNPC Error", "Could not load the specified enemy.").show();
6199 }
6200
6201 pack_fclose(f);
6202 elist_dlg[2].flags|=D_DIRTY;
6203 saved=false;
6204 }
6205
6206
6207 void elist_rclick_func(int32_t index, int32_t x, int32_t y)
6208 {
6209 if(index == 0)
6210 return;
6211
6212 NewMenu rcmenu {
6213 { "&Copy", [&](){copy_enemy(index);} },
6214 { "Paste", "&v", [&](){paste_enemy(index);}, 0, copiedGuy <= 0 },
6215 { "&Save", [&](){save_enemy(index);} },
6216 { "&Load", [&](){load_enemy(index);} },
6217 };
6218 rcmenu.pop(x, y);
6219 }
6220
6221 int32_t onCustomEnemies()
6222 {
6223 /*
6224 char *hold = item_string[0];
6225 item_string[0] = "rupee (1)";
6226 */
6227
6228 int32_t foo;
6229 int32_t index = select_enemy("Select Enemy",bie[0].i,true,true,foo);
6230
6231 while(index >= 0)
6232 {
6233 //I can't get the fucking dialog to handle a simple copy paste so I stuck it here else I'm going to rage kill something.
6234 //,,.Someone feel free to fix the thing properly later on.
6235 //Right now creating custom enemies remains a int32_t painful process, but it shouldn't be this hard for users to use.
6236 //-Two cents worth. -Gleeok
6237 if(key[KEY_OPENBRACE]) //copy
6238 {
6239 if(index != 0)
6240 copiedGuy=index;
6241 }
6242 else if(key[KEY_CLOSEBRACE]) //paste
6243 {
6244 if(copiedGuy>0 && index!=0)
6245 {
6246 guysbuf[index]=guysbuf[copiedGuy];
6247 saved=false;
6248 }
6249 }
6250 else
6251 {
6252 if(index != 0)
6253 {
6254 edit_enemydata(index);
6255 }
6256 }
6257
6258 index = select_enemy("Select Enemy",index,true,true,foo);
6259 }
6260
6261 refresh(rMAP+rCOMBOS);
6262 return D_O_K;
6263 }
6264
6265
6266 int32_t onCustomGuys()
6267 {
6268 return D_O_K;
6269 }
6270
6271 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t c);
6272 static int32_t herotile_land_walk_list[] =
6273 {
6274 // dialog control number
6275 11, 12, 13, 14, 15, 16, 17, 18, -1
6276 };
6277
6278 static int32_t herotile_land_slash_list[] =
6279 {
6280 // dialog control number
6281 19, 20, 21, 22, 23, 24, 25, 26, -1
6282 };
6283
6284 static int32_t herotile_land_stab_list[] =
6285 {
6286 // dialog control number
6287 27, 28, 29, 30, 31, 32, 33, 34, -1
6288 };
6289
6290 static int32_t herotile_land_pound_list[] =
6291 {
6292 // dialog control number
6293 35, 36, 37, 38, 39, 40, 41, 42, -1
6294 };
6295
6296 static int32_t herotile_land_hold_list[] =
6297 {
6298 // dialog control number
6299 43, 44, 45, 46, -1
6300 };
6301
6302 static int32_t herotile_land_cast_list[] =
6303 {
6304 // dialog control number
6305 47, -1
6306 };
6307
6308 static int32_t herotile_land_fall_list[] =
6309 {
6310 // dialog control number
6311 105, 106, 107, 108, 109, 110, 111, 112, -1
6312 };
6313
6314 static int32_t herotile_land_liftwalk_list[] =
6315 {
6316 // dialog control number
6317 260, 261, 262, 263, 264, 265, 266, 267, -1
6318 };
6319 static int32_t herotile_land_lift_list[] =
6320 {
6321 // dialog control number
6322 268, 269, 270, 271, 272, 273, 274, 275,
6323 276, 277, 278, 279, 280, 281, 282, 283,
6324 284, 285, -1
6325 };
6326
6327 static int32_t herotile_land_jump_list[] =
6328 {
6329 // dialog control number
6330 77, 78, 79, 80, 81, 82, 83, 84, -1
6331 };
6332
6333 static int32_t herotile_land_charge_list[] =
6334 {
6335 // dialog control number
6336 85, 86, 87, 88, 89, 90, 91, 92, -1
6337 };
6338
6339 static int32_t herotile_land_revslash_list[] =
6340 {
6341 // dialog control number
6342 252, 253, 254, 255, 256, 257, 258, 259, -1
6343 };
6344
6345 static TABPANEL herotile_land_tabs[] =
6346 {
6347 // (text)
6348 { (char *)"Walk", D_SELECTED, herotile_land_walk_list, 0, NULL },
6349 { (char *)"Slash", 0, herotile_land_slash_list, 0, NULL },
6350 { (char *)"Slash 2", 0, herotile_land_revslash_list, 0, NULL },
6351 { (char *)"Stab", 0, herotile_land_stab_list, 0, NULL },
6352 { (char *)"Pound", 0, herotile_land_pound_list, 0, NULL },
6353 { (char *)"Jump", 0, herotile_land_jump_list, 0, NULL },
6354 { (char *)"Charge", 0, herotile_land_charge_list, 0, NULL },
6355 { (char *)"Hold", 0, herotile_land_hold_list, 0, NULL },
6356 { (char *)"Cast", 0, herotile_land_cast_list, 0, NULL },
6357 { (char *)"Falling", 0, herotile_land_fall_list, 0, NULL },
6358 { (char *)"Lifting", 0, herotile_land_lift_list, 0, NULL },
6359 { (char *)"Lift+Walk", 0, herotile_land_liftwalk_list, 0, NULL },
6360 { NULL, 0, NULL, 0, NULL }
6361 };
6362
6363 static int32_t herotile_water_float_list[] =
6364 {
6365 // dialog control number
6366 48, 49, 50, 51, 52, 53, 54, 55, -1
6367 };
6368
6369 static int32_t herotile_water_swim_list[] =
6370 {
6371 // dialog control number
6372 56, 57, 58, 59, 60, 61, 62, 63, -1
6373 };
6374
6375 static int32_t herotile_water_dive_list[] =
6376 {
6377 // dialog control number
6378 64, 65, 66, 67, 68, 69, 70, 71, -1
6379 };
6380
6381 static int32_t herotile_water_hold_list[] =
6382 {
6383 // dialog control number
6384 72, 73, 74, 75, -1
6385 };
6386
6387 static int32_t herotile_water_drown_list[] =
6388 {
6389 // dialog control number
6390 97, 98, 99, 100, 101, 102, 103, 104, -1
6391 };
6392
6393 static int32_t herotile_lava_drown_list[] =
6394 {
6395 // dialog control number
6396 113, 114, 115, 116, 117, 118, 119, 120, -1
6397 };
6398
6399 static TABPANEL herotile_water_tabs[] =
6400 {
6401 // (text)
6402 { (char *)"Float", D_SELECTED, herotile_water_float_list, 0, NULL },
6403 { (char *)"Swim", 0, herotile_water_swim_list, 0, NULL },
6404 { (char *)"Dive", 0, herotile_water_dive_list, 0, NULL },
6405 { (char *)"Drown", 0, herotile_water_drown_list, 0, NULL },
6406 { (char *)"Hold", 0, herotile_water_hold_list, 0, NULL },
6407 { (char *)"Lava Drown", 0, herotile_lava_drown_list, 0, NULL },
6408 { NULL, 0, NULL, 0, NULL }
6409 };
6410
6411 static int32_t herotile_sidewater_swim_list[] =
6412 {
6413 // dialog control number
6414 196, 197, 198, 199, 200, 201, 202, 203, -1
6415 };
6416
6417 static int32_t herotile_sidewater_slash_list[] =
6418 {
6419 // dialog control number
6420 204, 205, 206, 207, 208, 209, 210, 211, -1
6421 };
6422
6423 static int32_t herotile_sidewater_stab_list[] =
6424 {
6425 // dialog control number
6426 212, 213, 214, 215, 216, 217, 218, 219, -1
6427 };
6428
6429 static int32_t herotile_sidewater_pound_list[] =
6430 {
6431 // dialog control number
6432 220, 221, 222, 223, 224, 225, 226, 227, 236, 237, 238, 239, 240, 241, 242, 243,-1
6433 };
6434
6435 static int32_t herotile_sidewater_charge_list[] =
6436 {
6437 // dialog control number
6438 228, 229, 230, 231, 232, 233, 234, 235, -1
6439 };
6440
6441 static int32_t herotile_sidewater_hold_list[] =
6442 {
6443 // dialog control number
6444 244,245,246,247,248,249,250,251, -1
6445 };
6446
6447 static TABPANEL herotile_sidewater_tabs[] =
6448 {
6449 // (text)
6450 { (char *)"Swim", D_SELECTED, herotile_sidewater_swim_list, 0, NULL },
6451 { (char *)"S. Slash", 0, herotile_sidewater_slash_list, 0, NULL },
6452 { (char *)"S. Stab", 0, herotile_sidewater_stab_list, 0, NULL },
6453 { (char *)"S. Pound", 0, herotile_sidewater_pound_list, 0, NULL },
6454 { (char *)"S. Charge", 0, herotile_sidewater_charge_list, 0, NULL },
6455 { (char *)"S. Misc", 0, herotile_sidewater_hold_list, 0, NULL },
6456 { NULL, 0, NULL, 0, NULL }
6457 };
6458
6459 static int32_t herotile_defense_enemy1_list[] =
6460 {
6461 //dialog control number
6462 122, 123, 124, 125, 126, 127, 128, 129, 130, 145, 146, 147, 148, 149, 150, 151, 152, 153, 168, -1
6463 };
6464
6465 static int32_t herotile_defense_enemy2_list[] =
6466 {
6467 //dialog control number
6468 131, 132, 133, 134, 135, 136, 137, 138, 154, 155, 156, 157, 158, 159, 160, 161, -1
6469 };
6470
6471 static int32_t herotile_defense_other1_list[] =
6472 {
6473 //dialog control number
6474 139, 140, 141, 142, 143, 144, 162, 163, 164, 165, 166, 167, -1
6475 };
6476
6477 static int32_t herotile_defense_script_list[] =
6478 {
6479 //dialog control number
6480 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, -1
6481 };
6482
6483 static TABPANEL herotile_defense_tabs[] =
6484 {
6485 // (text)
6486 { (char*)"Enemy 1", D_SELECTED, herotile_defense_enemy1_list, 0, NULL },
6487 { (char*)"Enemy 2", 0, herotile_defense_enemy2_list, 0, NULL },
6488 { (char*)"Other", 0, herotile_defense_other1_list, 0, NULL },
6489 { (char*)"Script", 0, herotile_defense_script_list, 0, NULL },
6490 { NULL, 0, NULL, 0, NULL }
6491 };
6492
6493
6494 static int32_t herotile_land_list[] =
6495 {
6496 // dialog control number
6497 9, -1
6498 };
6499
6500 static int32_t herotile_water_list[] =
6501 {
6502 // dialog control number
6503 10, -1
6504 };
6505
6506 static int32_t herotile_sidewater_list[] =
6507 {
6508 // dialog control number
6509 195, -1
6510 };
6511
6512 static int32_t herotile_defense_list[] =
6513 {
6514 // dialog control number
6515 121, -1
6516 };
6517
6518 static int32_t herotile_option_list[] =
6519 {
6520 // dialog control number
6521 189, 190, 191, 192, 193, 194, -1
6522 };
6523
6524 static TABPANEL herotile_tabs[] =
6525 {
6526 // (text)
6527 { (char *)"Sprites (Land)", D_SELECTED, herotile_land_list, 0, NULL },
6528 { (char *)"Sprites (Liquid)", 0, herotile_water_list, 0, NULL },
6529 { (char *)"Sprites (Side Liquid)", 0, herotile_sidewater_list, 0, NULL },
6530 { (char *)"Defenses", 0, herotile_defense_list, 0, NULL},
6531 { (char *)"Options", 0, herotile_option_list, 0, NULL },
6532 { NULL, 0, NULL, 0, NULL }
6533 };
6534
6535 const char *animationstyles[las_max]= { "Original", "BS-Zelda", "Zelda 3", "Zelda 3 (Slow Walk)" };
6536
6537 const char *animationstylelist(int32_t index, int32_t *list_size)
6538 {
6539 if(index>=0)
6540 {
6541 return animationstyles[index];
6542 }
6543
6544 *list_size=las_max;
6545 return NULL;
6546 }
6547
6548 const char *swimspeeds[2]= { "Slow", "Fast" };
6549
6550 const char *swimspeedlist(int32_t index, int32_t *list_size)
6551 {
6552 if(index>=0)
6553 {
6554 return swimspeeds[index];
6555 }
6556
6557 *list_size=2;
6558 return NULL;
6559 }
6560
6561 int32_t jwin_as_droplist_proc(int32_t msg,DIALOG *d,int32_t c)
6562 {
6563 int32_t ret = jwin_droplist_proc(msg,d,c);
6564
6565 switch(msg)
6566 {
6567 case MSG_CHAR:
6568 case MSG_CLICK:
6569 zinit.heroAnimationStyle=d->d1;
6570
6571 if(zinit.heroAnimationStyle==las_zelda3slow)
6572 {
6573 hero_animation_speed=2;
6574 }
6575 else
6576 {
6577 hero_animation_speed=1;
6578 }
6579 }
6580
6581 return ret;
6582 }
6583
6584 9 static ListData animationstyle_list(animationstylelist, &font);
6585 9 static ListData swimspeed_list(swimspeedlist, &font);
6586
6587 static DIALOG herotile_dlg[] =
6588 {
6589 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3)
6590 9 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, (void *) "Player Sprites", NULL, NULL },
6591 9 { d_vsync_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6592 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F1, 0, (void *) onHelp, NULL, NULL },
6593 9 { jwin_button_proc, 90, 220, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
6594 9 { jwin_button_proc, 170, 220, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
6595 // 5
6596 9 { d_dummy_proc, 217, 200, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Large Player Hit Box", NULL, NULL },
6597 9 { d_dummy_proc, 4, 201, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Animation Style:", NULL, NULL },
6598 9 { d_dummy_proc, 77, 197, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &animationstyle_list, NULL, NULL },
6599 9 { jwin_tab_proc, 4, 17, 312, 200, 0, 0, 0, 0, 0, 0, (void *) herotile_tabs, NULL, (void *)herotile_dlg },
6600 // 9
6601 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_land_tabs, NULL, (void *)herotile_dlg },
6602 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_water_tabs, NULL, (void *)herotile_dlg },
6603 // 11 (walk sprite titles)
6604 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6605 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6606 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6607 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6608 // 15 (walk sprites)
6609 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_walk, NULL, NULL, NULL },
6610 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_walk, NULL, NULL, NULL },
6611 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_walk, NULL, NULL, NULL },
6612 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_walk, NULL, NULL, NULL },
6613 // 19 (slash spritetitles)
6614 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6615 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6616 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6617 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6618 // 23 (slash sprites)
6619 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_slash, NULL, NULL, NULL },
6620 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_slash, NULL, NULL, NULL },
6621 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_slash, NULL, NULL, NULL },
6622 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_slash, NULL, NULL, NULL },
6623 // 27 (stab sprite titles)
6624 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6625 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6626 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6627 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6628 // 31 (stab sprites)
6629 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_stab, NULL, NULL, NULL },
6630 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_stab, NULL, NULL, NULL },
6631 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_stab, NULL, NULL, NULL },
6632 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_stab, NULL, NULL, NULL },
6633 // 35 (pound sprite titles)
6634 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6635 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6636 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6637 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6638 // 39 (pound sprites)
6639 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_pound, NULL, NULL, NULL },
6640 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_pound, NULL, NULL, NULL },
6641 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_pound, NULL, NULL, NULL },
6642 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_pound, NULL, NULL, NULL },
6643 // 43 (hold sprite titles)
6644 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6645 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6646 // 45 (hold sprites)
6647 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_landhold1, NULL, NULL, NULL },
6648 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_landhold2, NULL, NULL, NULL },
6649 // 47 (casting sprites)
6650 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_cast, NULL, NULL, NULL },
6651
6652 // 48 (float sprite titles)
6653 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6654 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6655 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6656 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6657 // 52 (float sprites)
6658 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_float, NULL, NULL, NULL },
6659 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_float, NULL, NULL, NULL },
6660 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_float, NULL, NULL, NULL },
6661 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_float, NULL, NULL, NULL },
6662 // 56 (swim sprite titles)
6663 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6664 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6665 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6666 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6667 // 60 (swim sprites)
6668 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_swim, NULL, NULL, NULL },
6669 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_swim, NULL, NULL, NULL },
6670 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_swim, NULL, NULL, NULL },
6671 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_swim, NULL, NULL, NULL },
6672 // 64 (dive sprite titles)
6673 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6674 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6675 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6676 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6677 // 68 (dive sprites)
6678 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_dive, NULL, NULL, NULL },
6679 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_dive, NULL, NULL, NULL },
6680 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_dive, NULL, NULL, NULL },
6681 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_dive, NULL, NULL, NULL },
6682 // 72 (hold sprite titles)
6683 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6684 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6685 // 74 (hold sprites)
6686 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_waterhold1, NULL, NULL, NULL },
6687 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_waterhold2, NULL, NULL, NULL },
6688 9 { d_dummy_proc, 217, 186, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Diagonal Movement", NULL, NULL },
6689 // 77 (jump sprite titles)
6690 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6691 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6692 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6693 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6694 // 81 (jump sprites)
6695 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_jump, NULL, NULL, NULL },
6696 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_jump, NULL, NULL, NULL },
6697 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_jump, NULL, NULL, NULL },
6698 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_jump, NULL, NULL, NULL },
6699 // 85 (charge sprite titles)
6700 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6701 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6702 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6703 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6704 // 89 (charge sprites)
6705 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_charge, NULL, NULL, NULL },
6706 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_charge, NULL, NULL, NULL },
6707 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_charge, NULL, NULL, NULL },
6708 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_charge, NULL, NULL, NULL },
6709 // 93
6710 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6711 9 { d_dummy_proc, 4, 183, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Swim Speed:", NULL, NULL },
6712 9 { d_dummy_proc, 77, 179, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &swimspeed_list, NULL, NULL },
6713 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
6714 // 97 (drown sprite titles)
6715 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6716 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6717 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6718 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6719 // 101 (drown sprites)
6720 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_drown, NULL, NULL, NULL },
6721 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_drown, NULL, NULL, NULL },
6722 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_drown, NULL, NULL, NULL },
6723 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_drown, NULL, NULL, NULL },
6724 // 105 (falling sprite titles)
6725 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6726 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6727 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6728 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6729 // 109 (falling sprites)
6730 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_falling, NULL, NULL, NULL },
6731 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_falling, NULL, NULL, NULL },
6732 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_falling, NULL, NULL, NULL },
6733 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_falling, NULL, NULL, NULL },
6734
6735 // 113 (lavadrown sprite titles)
6736 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6737 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6738 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6739 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6740 // 117 (lavadrown sprites)
6741 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lavadrown, NULL, NULL, NULL },
6742 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lavadrown, NULL, NULL, NULL },
6743 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lavadrown, NULL, NULL, NULL },
6744 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lavadrown, NULL, NULL, NULL },
6745
6746 // DEFENSE TAB BEGINS
6747 // 121 (Player defenses)
6748 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void*)herotile_defense_tabs, NULL, (void*)herotile_dlg },
6749 // 122 - Enemy weapons (currently 17)
6750 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball Defense:", NULL, NULL },
6751 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Arrow Defense:", NULL, NULL },
6752 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Boomerang Defense:", NULL, NULL },
6753 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Sword Beam Defense:", NULL, NULL },
6754 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Rock Defense:", NULL, NULL },
6755 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Magic Defense:", NULL, NULL },
6756 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (object) Defense:", NULL, NULL },
6757 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (object) Defense:", NULL, NULL },
6758 9 { jwin_text_proc, 9, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (explode) Defense:", NULL, NULL },
6759 // 131 - Enemy weapons page 2
6760 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (explode) Defense:", NULL, NULL },
6761 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Trail Defense:", NULL, NULL },
6762 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Defense:", NULL, NULL },
6763 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Wind Defense:", NULL, NULL },
6764 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Defense:", NULL, NULL },
6765 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Trail Defense:", NULL, NULL },
6766 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Ice Defense:", NULL, NULL },
6767 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball 2 Defense:", NULL, NULL },
6768 // 139 - Other weapons (Currently 6)
6769 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Candle Fire Defense:", NULL, NULL },
6770 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Player Bomb Defense:", NULL, NULL },
6771 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Magic Defense:", NULL, NULL },
6772 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Fireball Defense:", NULL, NULL },
6773 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Rock Defense:", NULL, NULL },
6774 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Sword Beam Defense:", NULL, NULL },
6775 // 145 - Enemy weapons pulldown
6776 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6777 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6778 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6779 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6780 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6781 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6782 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6783 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6784 9 { jwin_droplist_proc, 126, 198 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6785 // 154 - Enemy weapons pulldown page 2
6786 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6787 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6788 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6789 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6790 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6791 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6792 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6793 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6794 // 162 - Other weapon pulldown
6795 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6796 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6797 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6798 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6799 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6800 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6801 // 168 - Set all button
6802 9 { jwin_button_proc, 255, 54 - 4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"Set All", NULL, NULL },
6803
6804
6805 // 169 - Script 1
6806 9 { jwin_text_proc, 9, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 1 Defense:", NULL, NULL },
6807 9 { jwin_text_proc, 9, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 2 Defense:", NULL, NULL },
6808 9 { jwin_text_proc, 9, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 3 Defense:", NULL, NULL },
6809 9 { jwin_text_proc, 9, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 4 Defense:", NULL, NULL },
6810 9 { jwin_text_proc, 9, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 5 Defense:", NULL, NULL },
6811 9 { jwin_text_proc, 9, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 6 Defense:", NULL, NULL },
6812 9 { jwin_text_proc, 9, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 7 Defense:", NULL, NULL },
6813 9 { jwin_text_proc, 9, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 8 Defense:", NULL, NULL },
6814 9 { jwin_text_proc, 9, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 9 Defense:", NULL, NULL },
6815 9 { jwin_text_proc, 9, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 10 Defense:", NULL, NULL },
6816 //179 script 1 pulldown
6817
6818 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
6819 9 { jwin_droplist_proc, 126, 51 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6820 9 { jwin_droplist_proc, 126, 67 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6821 9 { jwin_droplist_proc, 126, 83 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6822 9 { jwin_droplist_proc, 126, 99 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6823 9 { jwin_droplist_proc, 126, 115 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6824 9 { jwin_droplist_proc, 126, 131 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6825 9 { jwin_droplist_proc, 126, 147 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6826 9 { jwin_droplist_proc, 126, 163 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6827 9 { jwin_droplist_proc, 126, 179 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6828 9 { jwin_droplist_proc, 126, 196 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6829 // 189 - Options relocated to handle new tab
6830 9 { jwin_check_proc, 9, 78, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Large Player Hit Box", NULL, NULL },
6831 9 { jwin_text_proc, 9, 38, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Animation Style:", NULL, NULL },
6832 9 { jwin_as_droplist_proc, 89, 34, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&animationstyle_list, NULL, NULL },
6833 9 { jwin_check_proc, 9, 90, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Diagonal Movement", NULL, NULL },
6834 9 { jwin_text_proc, 9, 54, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Swim Speed:", NULL, NULL },
6835 9 { jwin_droplist_proc, 89, 50, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&swimspeed_list, NULL, NULL },
6836 //195 Sideview water tab
6837 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_sidewater_tabs, NULL, (void *)herotile_dlg },
6838 // 196 (sideswim sprite titles)
6839 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6840 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6841 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6842 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6843 // 200 (sideswim sprites)
6844 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswim, NULL, NULL, NULL },
6845 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswim, NULL, NULL, NULL },
6846 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswim, NULL, NULL, NULL },
6847 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswim, NULL, NULL, NULL },
6848 // 204 (sideswim slash sprite titles)
6849 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6850 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6851 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6852 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6853 // 208 (sideswim slash sprites)
6854 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimslash, NULL, NULL, NULL },
6855 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimslash, NULL, NULL, NULL },
6856 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimslash, NULL, NULL, NULL },
6857 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimslash, NULL, NULL, NULL },
6858 // 212 (sideswim stab sprite titles)
6859 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6860 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6861 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6862 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6863 // 216 (sideswim stab sprites)
6864 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimstab, NULL, NULL, NULL },
6865 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimstab, NULL, NULL, NULL },
6866 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimstab, NULL, NULL, NULL },
6867 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimstab, NULL, NULL, NULL },
6868 // 220 (sideswim pound sprite titles)
6869 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6870 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6871 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6872 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6873 // 224 (sideswim pound sprites)
6874 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimpound, NULL, NULL, NULL },
6875 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimpound, NULL, NULL, NULL },
6876 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimpound, NULL, NULL, NULL },
6877 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimpound, NULL, NULL, NULL },
6878 // 228 (sideswim charge sprite titles)
6879 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6880 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6881 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6882 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6883 // 232 (sideswim charge sprites)
6884 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcharge, NULL, NULL, NULL },
6885 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimcharge, NULL, NULL, NULL },
6886 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimcharge, NULL, NULL, NULL },
6887 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimcharge, NULL, NULL, NULL },
6888 // 236 (swim hammer offset titles)
6889 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6890 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6891 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6892 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6893 // 240 (swim hammer offset fields)
6894 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6895 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6896 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6897 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6898 // 244 (hold sprite titles)
6899 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "1 Hand", NULL, NULL },
6900 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Casting", NULL, NULL },
6901 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "2 Hands", NULL, NULL },
6902 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Drown", NULL, NULL },
6903 // 248 (hold sprites)
6904 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sidewaterhold1, NULL, NULL, NULL },
6905 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcast, NULL, NULL, NULL },
6906 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sidewaterhold2, NULL, NULL, NULL },
6907 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sidedrown, NULL, NULL, NULL },
6908 // 252 (revslash sprite titles)
6909 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6910 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6911 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6912 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6913 // 256 (revslash sprites)
6914 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_revslash, NULL, NULL, NULL },
6915 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_revslash, NULL, NULL, NULL },
6916 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_revslash, NULL, NULL, NULL },
6917 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_revslash, NULL, NULL, NULL },
6918 // 260 (lifting)
6919 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6920 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6921 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6922 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6923 // 264 (lift sprites)
6924 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_liftwalk, NULL, NULL, NULL },
6925 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_liftwalk, NULL, NULL, NULL },
6926 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_liftwalk, NULL, NULL, NULL },
6927 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_liftwalk, NULL, NULL, NULL },
6928 // 268 (lifting)
6929 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6930 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6931 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6932 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6933 // 272 (lift sprites)
6934 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lifting, NULL, NULL, NULL },
6935 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lifting, NULL, NULL, NULL },
6936 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lifting, NULL, NULL, NULL },
6937 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lifting, NULL, NULL, NULL },
6938 // 276 (lift frame count labels)
6939 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6940 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6941 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6942 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6943 // 280 (lift frame count fields)
6944 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6945 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6946 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6947 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6948 // 284 (lift speed preview value)
6949 9 { jwin_rtext_proc, 60, 58, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Preview Speed", NULL, NULL },
6950 9 { jwin_edit_proc, 63, 55, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6951
6952 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
6953
6954 };
6955
6956 static char liftspeed[4] = "4";
6957 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t)
6958 {
6959 //d1=dir
6960 //d2=type (determines how to animate)
6961 //fg=cset (6)
6962 enum {lt_clock, lt_tile, lt_flip, lt_extend, lt_frames};
6963 static int32_t bg=makecol(0, 0, 0);
6964 int32_t *p=(int32_t*)d->dp3;
6965 int32_t oldtile=0;
6966 int32_t oldflip=0;
6967
6968 switch(msg)
6969 {
6970 case MSG_START:
6971 {
6972 d->dp3=(int32_t*)malloc(sizeof(int32_t)*5);
6973 p=(int32_t*)d->dp3;
6974 p[lt_clock]=0;
6975 p[lt_tile]=0;
6976 p[lt_flip]=0;
6977 p[lt_extend]=0;
6978 p[lt_frames]=0;
6979 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
6980 if(d->d2 == ls_lifting)
6981 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
6982 break;
6983 }
6984
6985 case MSG_CLICK:
6986 {
6987 int32_t t;
6988 int32_t f;
6989 int32_t extend;
6990 int32_t cs = 6;
6991 herotile(&t, &f, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
6992
6993 switch(extend)
6994 {
6995 case 0:
6996 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+32+8+2, d->y+(16+32)+2))
6997 {
6998 return D_O_K;
6999 }
7000
7001 break;
7002
7003 case 1:
7004 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+(32)+8+2, d->y+(4+64)+2))
7005 {
7006 return D_O_K;
7007 }
7008
7009 break;
7010
7011 case 2:
7012 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+4, d->x+(64)+8+2, d->y+(4+64)+2))
7013 {
7014 return D_O_K;
7015 }
7016
7017 break;
7018 }
7019
7020 if((CHECK_CTRL_CMD)
7021 ? select_tile_2(t,f,2,cs,false,extend,true)
7022 : select_tile(t,f,2,cs,false,extend,true))
7023 {
7024 extend=ex;
7025 setherotile(t,f,extend,d->d2,d->d1);
7026 return D_REDRAW;
7027 }
7028 }
7029 break;
7030
7031 case MSG_VSYNC:
7032 {
7033 oldtile=p[lt_tile];
7034 oldflip=p[lt_flip];
7035 p[lt_clock]++;
7036 auto lspeed = vbound(atoi(liftspeed),1,255);
7037 if(d->d2 == ls_lifting)
7038 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
7039
7040 switch(zinit.heroAnimationStyle)
7041 {
7042 case las_original: //2-frame
7043 switch(d->d2)
7044 {
7045 case ls_charge:
7046 case ls_walk:
7047 {
7048 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7049
7050 if(p[lt_clock]>=6)
7051 {
7052 if(d->d1==up&&d->d2==ls_walk)
7053 {
7054 p[lt_flip]=1; //h flip
7055 }
7056 else
7057 {
7058 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7059 }
7060 };
7061
7062 if(p[lt_clock]>=11)
7063 {
7064 p[lt_clock]=-1;
7065 }
7066
7067 break;
7068 }
7069
7070 case ls_sideswim:
7071 case ls_sideswimcharge:
7072 {
7073 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7074
7075 if(p[lt_clock]>=6)
7076 {
7077 if(d->d1==up&&d->d2==ls_sideswim)
7078 {
7079 p[lt_flip]=1; //h flip
7080 }
7081 else
7082 {
7083 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7084 }
7085 };
7086
7087 if(p[lt_clock]>=11)
7088 {
7089 p[lt_clock]=-1;
7090 }
7091
7092 break;
7093 }
7094
7095 case ls_sideswimslash:
7096 {
7097 if(p[lt_clock]<6)
7098 {
7099 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7100 }
7101 else if(p[lt_clock]<12)
7102 {
7103 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7104 }
7105 else if(p[lt_clock]<13)
7106 {
7107 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7108 }
7109 else
7110 {
7111 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7112 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7113
7114 if(p[lt_clock]>=16)
7115 {
7116 p[lt_clock]=-1;
7117 }
7118 };
7119
7120 break;
7121 }
7122
7123 case ls_sideswimstab:
7124 {
7125 if(p[lt_clock]<12)
7126 {
7127 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7128 }
7129 else if(p[lt_clock]<13)
7130 {
7131 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7132 }
7133 else
7134 {
7135 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7136 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7137
7138 if(p[lt_clock]>=16)
7139 {
7140 p[lt_clock]=-1;
7141 }
7142 };
7143
7144 break;
7145 }
7146
7147 case ls_sideswimpound:
7148 {
7149 if(p[lt_clock]<12)
7150 {
7151 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7152 }
7153 else if(p[lt_clock]<30)
7154 {
7155 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7156 }
7157 else
7158 {
7159 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7160
7161 if(p[lt_clock]>=31)
7162 {
7163 p[lt_clock]=-1;
7164 }
7165 };
7166
7167 break;
7168 }
7169
7170 case ls_jump:
7171 {
7172 if(p[lt_clock]>=24)
7173 {
7174 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7175
7176 if(p[lt_clock]>=36)
7177 {
7178 p[lt_clock]=-1;
7179 }
7180 }
7181 else
7182 {
7183 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7184 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7185 }
7186
7187 break;
7188 }
7189
7190 case ls_slash:
7191 {
7192 if(p[lt_clock]<6)
7193 {
7194 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7195 }
7196 else if(p[lt_clock]<12)
7197 {
7198 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7199 }
7200 else if(p[lt_clock]<13)
7201 {
7202 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7203 }
7204 else
7205 {
7206 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7207 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7208
7209 if(p[lt_clock]>=16)
7210 {
7211 p[lt_clock]=-1;
7212 }
7213 };
7214
7215 break;
7216 }
7217
7218 case ls_revslash:
7219 {
7220 if(p[lt_clock]<6)
7221 {
7222 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7223 }
7224 else if(p[lt_clock]<12)
7225 {
7226 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7227 }
7228 else if(p[lt_clock]<13)
7229 {
7230 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7231 }
7232 else
7233 {
7234 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7235 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7236
7237 if(p[lt_clock]>=16)
7238 {
7239 p[lt_clock]=-1;
7240 }
7241 };
7242
7243 break;
7244 }
7245
7246 case ls_stab:
7247 {
7248 if(p[lt_clock]<12)
7249 {
7250 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7251 }
7252 else if(p[lt_clock]<13)
7253 {
7254 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7255 }
7256 else
7257 {
7258 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7259 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7260
7261 if(p[lt_clock]>=16)
7262 {
7263 p[lt_clock]=-1;
7264 }
7265 };
7266
7267 break;
7268 }
7269
7270 case ls_pound:
7271 {
7272 if(p[lt_clock]<12)
7273 {
7274 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7275 }
7276 else if(p[lt_clock]<30)
7277 {
7278 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7279 }
7280 else
7281 {
7282 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7283
7284 if(p[lt_clock]>=31)
7285 {
7286 p[lt_clock]=-1;
7287 }
7288 };
7289
7290 break;
7291 }
7292
7293 case ls_float:
7294 {
7295 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7296
7297 if(p[lt_clock]>=12)
7298 {
7299 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7300 };
7301
7302 if(p[lt_clock]>=23)
7303 {
7304 p[lt_clock]=-1;
7305 }
7306
7307 break;
7308 }
7309
7310 case ls_swim:
7311 {
7312 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7313
7314 if(p[lt_clock]>=12)
7315 {
7316 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7317 };
7318
7319 if(p[lt_clock]>=23)
7320 {
7321 p[lt_clock]=-1;
7322 }
7323
7324 break;
7325 }
7326
7327 case ls_dive:
7328 {
7329 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7330
7331 if(p[lt_clock]>=50)
7332 {
7333 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7334 };
7335
7336 if((p[lt_clock]/12)&1)
7337 {
7338 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7339 };
7340
7341 if(p[lt_clock]>=81)
7342 {
7343 p[lt_clock]=-1;
7344 }
7345
7346 break;
7347 }
7348
7349 case ls_drown:
7350 {
7351 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7352
7353 if(p[lt_clock]<=4)
7354 {
7355 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7356 };
7357
7358 if((p[lt_clock]/12)&1)
7359 {
7360 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7361 };
7362
7363 if(p[lt_clock]>=81)
7364 {
7365 p[lt_clock]=-1;
7366 }
7367
7368 break;
7369 }
7370 case ls_sidedrown:
7371 {
7372 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7373
7374
7375 if((p[lt_clock]/12)&1)
7376 {
7377 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7378 };
7379
7380 if(p[lt_clock]>=81)
7381 {
7382 p[lt_clock]=-1;
7383 }
7384
7385 if(p[lt_clock]<=4)
7386 {
7387 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7388 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7389 };
7390 break;
7391 }
7392
7393 case ls_lavadrown:
7394 {
7395 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7396
7397 if(p[lt_clock]<=4)
7398 {
7399 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7400 };
7401
7402 if((p[lt_clock]/12)&1)
7403 {
7404 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7405 };
7406
7407 if(p[lt_clock]>=81)
7408 {
7409 p[lt_clock]=-1;
7410 }
7411
7412 break;
7413 }
7414
7415 case ls_falling:
7416 {
7417 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7418 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7419 break;
7420 }
7421
7422 case ls_landhold1:
7423 {
7424 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7425 break;
7426 }
7427
7428 case ls_landhold2:
7429 {
7430 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7431 break;
7432 }
7433
7434 case ls_waterhold1:
7435 {
7436 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7437 break;
7438 }
7439
7440 case ls_waterhold2:
7441 {
7442 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7443 break;
7444 }
7445
7446 case ls_sidewaterhold1:
7447 {
7448 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7449 break;
7450 }
7451
7452 case ls_sidewaterhold2:
7453 {
7454 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7455 break;
7456 }
7457
7458 case ls_cast:
7459 {
7460 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7461
7462 if(p[lt_clock]<96)
7463 {
7464 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7465 };
7466
7467 if(p[lt_clock]>=194)
7468 {
7469 p[lt_clock]=-1;
7470 }
7471
7472 break;
7473 }
7474
7475 case ls_sideswimcast:
7476 {
7477 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7478
7479 if(p[lt_clock]<96)
7480 {
7481 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7482 };
7483
7484 if(p[lt_clock]>=194)
7485 {
7486 p[lt_clock]=-1;
7487 }
7488
7489 break;
7490 }
7491
7492 case ls_lifting:
7493 {
7494 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7495 size_t fr = p[lt_clock] / lspeed;
7496 if(fr >= p[lt_frames])
7497 {
7498 fr = 0;
7499 p[lt_clock] = -1;
7500 }
7501 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7502 break;
7503 }
7504 case ls_liftwalk:
7505 {
7506 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7507 if(p[lt_clock]>=6)
7508 {
7509 if(d->d1==up)
7510 {
7511 p[lt_flip]=1; //h flip
7512 }
7513 else
7514 {
7515 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7516 }
7517 };
7518
7519 if(p[lt_clock]>=11)
7520 {
7521 p[lt_clock]=-1;
7522 }
7523 break;
7524 }
7525
7526 default:
7527 break;
7528 }
7529
7530 break;
7531
7532 case las_bszelda: //3-frame BS
7533 switch(d->d2)
7534 {
7535 case ls_charge:
7536 case ls_walk:
7537 {
7538 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7539 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7540
7541 if(p[lt_clock]>=27)
7542 {
7543 p[lt_clock]=-1;
7544 }
7545
7546 break;
7547 }
7548
7549 case ls_sideswim:
7550 case ls_sideswimcharge:
7551 {
7552 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7553 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7554
7555 if(p[lt_clock]>=27)
7556 {
7557 p[lt_clock]=-1;
7558 }
7559
7560 break;
7561 }
7562
7563 case ls_sideswimslash:
7564 {
7565 if(p[lt_clock]<6)
7566 {
7567 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7568 }
7569 else if(p[lt_clock]<12)
7570 {
7571 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7572 }
7573 else if(p[lt_clock]<13)
7574 {
7575 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7576 }
7577 else
7578 {
7579 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7580 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7581
7582 if(p[lt_clock]>=16)
7583 {
7584 p[lt_clock]=-1;
7585 }
7586 };
7587
7588 break;
7589 }
7590
7591 case ls_sideswimstab:
7592 {
7593 if(p[lt_clock]<12)
7594 {
7595 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7596 }
7597 else if(p[lt_clock]<13)
7598 {
7599 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7600 }
7601 else
7602 {
7603 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7604 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7605
7606 if(p[lt_clock]>=16)
7607 {
7608 p[lt_clock]=-1;
7609 }
7610 };
7611
7612 break;
7613 }
7614
7615 case ls_sideswimpound:
7616 {
7617 if(p[lt_clock]<12)
7618 {
7619 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7620 }
7621 else if(p[lt_clock]<30)
7622 {
7623 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7624 }
7625 else
7626 {
7627 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7628
7629 if(p[lt_clock]>=31)
7630 {
7631 p[lt_clock]=-1;
7632 }
7633 };
7634
7635 break;
7636 }
7637
7638 case ls_jump:
7639 {
7640 if(p[lt_clock]>=24)
7641 {
7642 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7643
7644 if(p[lt_clock]>=36)
7645 {
7646 p[lt_clock]=-1;
7647 }
7648 }
7649 else
7650 {
7651 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7652 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7653 }
7654
7655 break;
7656 }
7657
7658 case ls_slash:
7659 {
7660 if(p[lt_clock]<6)
7661 {
7662 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7663 }
7664 else if(p[lt_clock]<12)
7665 {
7666 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7667 }
7668 else if(p[lt_clock]<13)
7669 {
7670 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7671 }
7672 else
7673 {
7674 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7675 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7676
7677 if(p[lt_clock]>=16)
7678 {
7679 p[lt_clock]=-1;
7680 }
7681 };
7682
7683 break;
7684 }
7685
7686 case ls_revslash:
7687 {
7688 if(p[lt_clock]<6)
7689 {
7690 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7691 }
7692 else if(p[lt_clock]<12)
7693 {
7694 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7695 }
7696 else if(p[lt_clock]<13)
7697 {
7698 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7699 }
7700 else
7701 {
7702 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7703 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7704
7705 if(p[lt_clock]>=16)
7706 {
7707 p[lt_clock]=-1;
7708 }
7709 };
7710
7711 break;
7712 }
7713
7714 case ls_stab:
7715 {
7716 if(p[lt_clock]<12)
7717 {
7718 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7719 }
7720 else if(p[lt_clock]<13)
7721 {
7722 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7723 }
7724 else
7725 {
7726 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7727 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7728
7729 if(p[lt_clock]>=16)
7730 {
7731 p[lt_clock]=-1;
7732 }
7733 };
7734
7735 break;
7736 }
7737
7738 case ls_pound:
7739 {
7740 if(p[lt_clock]<12)
7741 {
7742 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7743 }
7744 else if(p[lt_clock]<30)
7745 {
7746 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7747 }
7748 else
7749 {
7750 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7751
7752 if(p[lt_clock]>=31)
7753 {
7754 p[lt_clock]=-1;
7755 }
7756 };
7757
7758 break;
7759 }
7760
7761 case ls_float:
7762 {
7763 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7764 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7765
7766 if(p[lt_clock]>=55)
7767 {
7768 p[lt_clock]=-1;
7769 }
7770
7771 break;
7772 }
7773
7774 case ls_swim:
7775 {
7776 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7777 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7778
7779 if(p[lt_clock]>=55)
7780 {
7781 p[lt_clock]=-1;
7782 }
7783
7784 break;
7785 }
7786
7787 case ls_dive:
7788 {
7789 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7790
7791 if(p[lt_clock]>=50)
7792 {
7793 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7794 };
7795
7796 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7797
7798 if(p[lt_clock]>=81)
7799 {
7800 p[lt_clock]=-1;
7801 }
7802
7803 break;
7804 }
7805
7806 case ls_drown:
7807 {
7808 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7809
7810 if(p[lt_clock]<=4)
7811 {
7812 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7813 };
7814
7815 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7816
7817 if(p[lt_clock]>=81)
7818 {
7819 p[lt_clock]=-1;
7820 }
7821
7822 break;
7823 }
7824
7825 case ls_sidedrown:
7826 {
7827 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7828 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7829
7830 if(p[lt_clock]<=4)
7831 {
7832 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7833 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7834 };
7835
7836
7837 if(p[lt_clock]>=81)
7838 {
7839 p[lt_clock]=-1;
7840 }
7841
7842 break;
7843 }
7844
7845 case ls_lavadrown:
7846 {
7847 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7848
7849 if(p[lt_clock]<=4)
7850 {
7851 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7852 };
7853
7854 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7855
7856 if(p[lt_clock]>=81)
7857 {
7858 p[lt_clock]=-1;
7859 }
7860
7861 break;
7862 }
7863
7864 case ls_falling:
7865 {
7866 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7867 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7868 break;
7869 }
7870
7871 case ls_landhold1:
7872 {
7873 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7874 break;
7875 }
7876
7877 case ls_landhold2:
7878 {
7879 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7880 break;
7881 }
7882
7883 case ls_waterhold1:
7884 {
7885 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7886 break;
7887 }
7888
7889 case ls_waterhold2:
7890 {
7891 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7892 break;
7893 }
7894
7895 case ls_sidewaterhold1:
7896 {
7897 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7898 break;
7899 }
7900
7901 case ls_sidewaterhold2:
7902 {
7903 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7904 break;
7905 }
7906
7907 case ls_cast:
7908 {
7909 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7910
7911 if(p[lt_clock]<96)
7912 {
7913 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7914 }
7915
7916 if(p[lt_clock]>=194)
7917 {
7918 p[lt_clock]=-1;
7919 }
7920
7921 break;
7922 }
7923
7924 case ls_sideswimcast:
7925 {
7926 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7927
7928 if(p[lt_clock]<96)
7929 {
7930 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7931 };
7932
7933 if(p[lt_clock]>=194)
7934 {
7935 p[lt_clock]=-1;
7936 }
7937
7938 break;
7939 }
7940
7941 case ls_lifting:
7942 {
7943 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7944 size_t fr = p[lt_clock] / lspeed;
7945 if(fr >= p[lt_frames])
7946 {
7947 fr = 0;
7948 p[lt_clock] = -1;
7949 }
7950 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7951 break;
7952 }
7953 case ls_liftwalk:
7954 {
7955 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7956 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7957
7958 if(p[lt_clock]>=27)
7959 {
7960 p[lt_clock]=-1;
7961 }
7962 break;
7963 }
7964
7965 default:
7966 break;
7967 }
7968 break;
7969
7970 case las_zelda3slow: //multi-frame Zelda 3 (slow)
7971 case las_zelda3: //multi-frame Zelda 3
7972 switch(d->d2)
7973 {
7974 case ls_charge:
7975 case ls_walk:
7976 {
7977 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7978
7979 if(p[lt_clock]>=(64*(hero_animation_speed)))
7980 {
7981 p[lt_tile]+=(p[lt_extend]==2?2:1);
7982
7983 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
7984 l-=((l>3)?1:0)+((l>12)?1:0);
7985 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
7986
7987 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
7988 if(p[lt_clock]>=255)
7989 {
7990 p[lt_clock]=-1;
7991 }
7992 }
7993
7994 break;
7995 }
7996 case ls_sideswim:
7997 case ls_sideswimcharge:
7998 {
7999 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
8000
8001 if(p[lt_clock]>=(64*(hero_animation_speed)))
8002 {
8003 p[lt_tile]+=(p[lt_extend]==2?2:1);
8004
8005 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8006 l-=((l>3)?1:0)+((l>12)?1:0);
8007 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8008
8009 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
8010 if(p[lt_clock]>=255)
8011 {
8012 p[lt_clock]=-1;
8013 }
8014 }
8015
8016 break;
8017
8018 case ls_sideswimstab:
8019 {
8020 if(p[lt_clock]>35)
8021 {
8022 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
8023 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8024
8025 if(p[lt_clock]>=47)
8026 {
8027 p[lt_clock]=-1;
8028 }
8029 }
8030 else
8031 {
8032 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8033 }
8034
8035 break;
8036 }
8037
8038 case ls_sideswimslash:
8039 {
8040 if(p[lt_clock]>23)
8041 {
8042 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
8043 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8044
8045 if(p[lt_clock]>=47)
8046 {
8047 p[lt_clock]=-1;
8048 }
8049 }
8050 else
8051 {
8052 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8053 }
8054
8055 break;
8056 }
8057
8058 case ls_sideswimpound:
8059 {
8060 if(p[lt_clock]>35)
8061 {
8062 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
8063 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8064
8065 if(p[lt_clock]>=47)
8066 {
8067 p[lt_clock]=-1;
8068 }
8069 }
8070 else
8071 {
8072 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8073 }
8074
8075 break;
8076 }
8077
8078 case ls_jump:
8079 {
8080 if(p[lt_clock]>=24)
8081 {
8082 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8083
8084 if(p[lt_clock]>=36)
8085 {
8086 p[lt_clock]=-1;
8087 }
8088 }
8089 else
8090 {
8091 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8092 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8093 }
8094
8095 break;
8096 }
8097
8098 case ls_slash:
8099 {
8100 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8101 {
8102 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_slash, d->d1, zinit.heroAnimationStyle);
8103 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8104
8105 if(p[lt_clock]>=47)
8106 {
8107 p[lt_clock]=-1;
8108 }
8109 }
8110 else
8111 {
8112 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8113 }
8114
8115 break;
8116 }
8117
8118 case ls_revslash:
8119 {
8120 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8121 {
8122 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_revslash, d->d1, zinit.heroAnimationStyle);
8123 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8124
8125 if(p[lt_clock]>=47)
8126 {
8127 p[lt_clock]=-1;
8128 }
8129 }
8130 else
8131 {
8132 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8133 }
8134
8135 break;
8136 }
8137
8138 case ls_stab: //12 frames, advances by one every 4 frames, 3 tiles total.
8139 if(p[lt_clock]>35)
8140 {
8141 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_stab, d->d1, zinit.heroAnimationStyle);
8142 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8143
8144 if(p[lt_clock]>=47)
8145 {
8146 p[lt_clock]=-1;
8147 }
8148 }
8149 else
8150 {
8151 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8152 }
8153
8154 break;
8155 }
8156
8157 case ls_pound:
8158 {
8159 if(p[lt_clock]>35)
8160 {
8161 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_pound, d->d1, zinit.heroAnimationStyle);
8162 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8163
8164 if(p[lt_clock]>=47)
8165 {
8166 p[lt_clock]=-1;
8167 }
8168 }
8169 else
8170 {
8171 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8172 }
8173
8174 break;
8175 }
8176
8177 case ls_float:
8178 {
8179 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8180 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8181
8182 if(p[lt_clock]>=23)
8183 {
8184 p[lt_clock]=-1;
8185 }
8186
8187 break;
8188 }
8189
8190 case ls_swim:
8191 {
8192 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
8193 p[lt_tile]+=((p[lt_clock]/12)%4)<<(p[lt_extend]==2?1:0);
8194
8195 if(p[lt_clock]>=47)
8196 {
8197 p[lt_clock]=-1;
8198 }
8199
8200 break;
8201 }
8202
8203 case ls_dive:
8204 {
8205 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
8206
8207 if(p[lt_clock]>=50)
8208 {
8209 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8210 };
8211
8212 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8213
8214 if(p[lt_clock]>=81)
8215 {
8216 p[lt_clock]=-1;
8217 }
8218
8219 break;
8220 }
8221
8222 case ls_drown:
8223 {
8224 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
8225
8226 if(p[lt_clock]<=4)
8227 {
8228 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8229 };
8230
8231 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8232
8233 if(p[lt_clock]>=81)
8234 {
8235 p[lt_clock]=-1;
8236 }
8237
8238 break;
8239 }
8240
8241 case ls_sidedrown:
8242 {
8243 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
8244 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8245
8246 if(p[lt_clock]<=4)
8247 {
8248 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8249 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8250 };
8251
8252
8253 if(p[lt_clock]>=81)
8254 {
8255 p[lt_clock]=-1;
8256 }
8257
8258 break;
8259 }
8260
8261 case ls_lavadrown:
8262 {
8263 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
8264
8265 if(p[lt_clock]<=4)
8266 {
8267 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8268 };
8269
8270 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8271
8272 if(p[lt_clock]>=81)
8273 {
8274 p[lt_clock]=-1;
8275 }
8276
8277 break;
8278 }
8279
8280 case ls_falling:
8281 {
8282 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
8283 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
8284 break;
8285 }
8286
8287 case ls_landhold1:
8288 {
8289 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
8290 break;
8291 }
8292
8293 case ls_landhold2:
8294 {
8295 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8296 break;
8297 }
8298
8299 case ls_waterhold1:
8300 {
8301 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
8302 break;
8303 }
8304
8305 case ls_waterhold2:
8306 {
8307 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
8308 break;
8309 }
8310
8311 case ls_sidewaterhold1:
8312 {
8313 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
8314 break;
8315 }
8316
8317 case ls_sidewaterhold2:
8318 {
8319 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8320 break;
8321 }
8322
8323 case ls_cast:
8324 {
8325 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
8326
8327 if(p[lt_clock]<96)
8328 {
8329 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8330 };
8331
8332 if(p[lt_clock]>=194)
8333 {
8334 p[lt_clock]=-1;
8335 }
8336
8337 break;
8338 }
8339
8340 case ls_sideswimcast:
8341 {
8342 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
8343
8344 if(p[lt_clock]<96)
8345 {
8346 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8347 };
8348
8349 if(p[lt_clock]>=194)
8350 {
8351 p[lt_clock]=-1;
8352 }
8353
8354 break;
8355 }
8356
8357 case ls_lifting:
8358 {
8359 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
8360 size_t fr = p[lt_clock] / lspeed;
8361 if(fr >= p[lt_frames])
8362 {
8363 fr = 0;
8364 p[lt_clock] = -1;
8365 }
8366 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
8367 break;
8368 }
8369 case ls_liftwalk:
8370 {
8371 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
8372
8373 if(p[lt_clock]>=(64*(hero_animation_speed)))
8374 {
8375 p[lt_tile]+=(p[lt_extend]==2?2:1);
8376
8377 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8378 l-=((l>3)?1:0)+((l>12)?1:0);
8379 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8380
8381 if(p[lt_clock]>=255)
8382 {
8383 p[lt_clock]=-1;
8384 }
8385 }
8386 break;
8387 }
8388
8389 default:
8390 break;
8391 }
8392 break;
8393
8394 default:
8395 break;
8396 }
8397
8398 if((p[lt_tile]!=oldtile)||(p[lt_flip]!=oldflip))
8399 {
8400 d->flags|=D_DIRTY;
8401 }
8402
8403 break;
8404 }
8405
8406 case MSG_DRAW:
8407 {
8408 BITMAP *buf=create_bitmap_ex(8,1,1);
8409 BITMAP *buf2=buf;
8410 int32_t dummy1, dummy2;
8411 int32_t extend;
8412 herotile(&dummy1, &dummy2, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
8413 int32_t w = 16;
8414 int32_t h = 16;
8415
8416 switch(extend)
8417 {
8418 case 0: //16x16
8419 break;
8420
8421 case 1: //16x32
8422 w = 16;
8423 h = 32;
8424 break;
8425
8426 case 2: //32x32
8427 w = 32;
8428 h = 32;
8429 break;
8430
8431 default:
8432 break;
8433 }
8434
8435 buf = create_bitmap_ex(8,w,h);
8436
8437 w *= 2;
8438 h *= 2;
8439
8440 BITMAP *bigbmp = create_bitmap_ex(8,w+4,h+4);
8441
8442 if(buf && bigbmp)
8443 {
8444 clear_to_color(buf, bg);
8445
8446 switch(extend)
8447 {
8448 case 0:
8449 overtile16(buf,p[lt_tile],0,0,6,p[lt_flip]);
8450 stretch_blit(buf, bigbmp, 0,0, 16, 16, 2, 2, w, h);
8451 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8452 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8453 break;
8454
8455 case 1:
8456 overtile16(buf,p[lt_tile]-TILES_PER_ROW,0,0,6,p[lt_flip]);
8457 overtile16(buf,p[lt_tile],0,16,6,p[lt_flip]);
8458 stretch_blit(buf, bigbmp, 0,0, 16, 32, 2, 2, w, h);
8459 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8460 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8461 break;
8462
8463 case 2:
8464 overtile16(buf,p[lt_tile]-TILES_PER_ROW,8,0,6,p[lt_flip]); //top middle
8465 overtile16(buf,p[lt_tile]-TILES_PER_ROW-(p[lt_flip]?-1:1),-8,0,6,p[lt_flip]); //top left
8466 overtile16(buf,p[lt_tile]-TILES_PER_ROW+(p[lt_flip]?-1:1),8+16,0,6,p[lt_flip]); //top right
8467 overtile16(buf,p[lt_tile]-(p[lt_flip]?-1:1),-8,16,6,p[lt_flip]); //bottom left
8468 overtile16(buf,p[lt_tile]+(p[lt_flip]?-1:1),8+16,16,6,p[lt_flip]); //bottom right
8469 overtile16(buf,p[lt_tile],8,16,6,p[lt_flip]); //bottom middle
8470 stretch_blit(buf, bigbmp, 0,0, 32, 32, 2, 2, w, h);
8471 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8472 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8473 break;
8474
8475 default:
8476 break;
8477 }
8478
8479 destroy_bitmap(bigbmp);
8480 destroy_bitmap(buf);
8481 destroy_bitmap(buf2);
8482 }
8483 }
8484 break;
8485
8486 case MSG_END:
8487 {
8488 free(d->dp3);
8489 break;
8490 }
8491 }
8492
8493 return D_O_K;
8494 }
8495
8496 int32_t onCustomHero()
8497 {
8498 //setupherotiles(zinit.heroAnimationStyle);
8499 if(zinit.heroAnimationStyle==las_zelda3slow)
8500 {
8501 hero_animation_speed=2;
8502 }
8503 else
8504 {
8505 hero_animation_speed=1;
8506 }
8507
8508 herotile_dlg[0].dp2=get_zc_font(font_lfont);
8509 herotile_dlg[189].flags = get_qr(qr_LTTPCOLLISION)? D_SELECTED : 0;
8510 herotile_dlg[192].flags = get_qr(qr_LTTPWALK)? D_SELECTED : 0;
8511 herotile_dlg[194].d1=(zinit.hero_swim_speed<60)?0:1;
8512 herotile_dlg[191].d1=zinit.heroAnimationStyle;
8513
8514 large_dialog(herotile_dlg, 2.0);
8515
8516 int32_t oldWalkSpr[4][3];
8517 int32_t oldStabSpr[4][3];
8518 int32_t oldSlashSpr[4][3];
8519 int32_t oldRevSlashSpr[4][3];
8520 int32_t oldFloatSpr[4][3];
8521 int32_t oldSwimSpr[4][3];
8522 int32_t oldDiveSpr[4][3];
8523 int32_t oldPoundSpr[4][3];
8524 int32_t oldJumpSpr[4][3];
8525 int32_t oldChargeSpr[4][3];
8526 int32_t oldCastSpr[3];
8527 int32_t oldsideswimCastSpr[3];
8528 int32_t oldHoldSpr[2][3][3];
8529 int32_t oldDrownSpr[4][3];
8530 int32_t oldSideDrownSpr[4][3];
8531 int32_t oldFallSpr[4][3];
8532 int32_t oldLavaDrownSpr[4][3];
8533 int32_t oldSideSwimSpr[4][3];
8534 int32_t oldSideSwimSlashSpr[4][3];
8535 int32_t oldSideSwimStabSpr[4][3];
8536 int32_t oldSideSwimPoundSpr[4][3];
8537 int32_t oldSideSwimChargeSpr[4][3];
8538 int32_t oldSideSwimHoldSpr[3][3];
8539 int32_t oldLiftingSpr[4][4];
8540 int32_t oldLiftingWalkSpr[4][3];
8541 char hmr1[8];
8542 char hmr2[8];
8543 char hmr3[8];
8544 char hmr4[8];
8545 sprintf(hmr1,"%d",hammeroffsets[0]);
8546 sprintf(hmr2,"%d",hammeroffsets[1]);
8547 sprintf(hmr3,"%d",hammeroffsets[2]);
8548 sprintf(hmr4,"%d",hammeroffsets[3]);
8549 herotile_dlg[240].dp = hmr1;
8550 herotile_dlg[241].dp = hmr2;
8551 herotile_dlg[242].dp = hmr3;
8552 herotile_dlg[243].dp = hmr4;
8553 char liftframes1[4];
8554 char liftframes2[4];
8555 char liftframes3[4];
8556 char liftframes4[4];
8557 sprintf(liftframes1,"%d",vbound(liftingspr[0][spr_frames],1,255));
8558 sprintf(liftframes2,"%d",vbound(liftingspr[1][spr_frames],1,255));
8559 sprintf(liftframes3,"%d",vbound(liftingspr[2][spr_frames],1,255));
8560 sprintf(liftframes4,"%d",vbound(liftingspr[3][spr_frames],1,255));
8561 herotile_dlg[280].dp = liftframes1;
8562 herotile_dlg[281].dp = liftframes2;
8563 herotile_dlg[282].dp = liftframes3;
8564 herotile_dlg[283].dp = liftframes4;
8565 herotile_dlg[285].dp = liftspeed;
8566 memcpy(oldWalkSpr, walkspr, 4*3*sizeof(int32_t));
8567 memcpy(oldStabSpr, stabspr, 4*3*sizeof(int32_t));
8568 memcpy(oldSlashSpr, slashspr, 4*3*sizeof(int32_t));
8569 memcpy(oldRevSlashSpr, revslashspr, 4*3*sizeof(int32_t));
8570 memcpy(oldFloatSpr, floatspr, 4*3*sizeof(int32_t));
8571 memcpy(oldSwimSpr, swimspr, 4*3*sizeof(int32_t));
8572 memcpy(oldDiveSpr, divespr, 4*3*sizeof(int32_t));
8573 memcpy(oldPoundSpr, poundspr, 4*3*sizeof(int32_t));
8574 memcpy(oldJumpSpr, jumpspr, 4*3*sizeof(int32_t));
8575 memcpy(oldChargeSpr, chargespr, 4*3*sizeof(int32_t));
8576 memcpy(oldCastSpr, castingspr, 3*sizeof(int32_t));
8577 memcpy(oldsideswimCastSpr, sideswimcastingspr, 3*sizeof(int32_t));
8578 memcpy(oldHoldSpr, holdspr, 2*3*3*sizeof(int32_t));
8579 memcpy(oldDrownSpr, drowningspr, 4*3*sizeof(int32_t));
8580 memcpy(oldSideDrownSpr, sidedrowningspr, 4*3*sizeof(int32_t));
8581 memcpy(oldFallSpr, fallingspr, 4*3*sizeof(int32_t));
8582 memcpy(oldLavaDrownSpr, drowning_lavaspr, 4*3*sizeof(int32_t));
8583 memcpy(oldSideSwimSpr, sideswimspr, 4*3*sizeof(int32_t));
8584 memcpy(oldSideSwimSlashSpr, sideswimslashspr, 4*3*sizeof(int32_t));
8585 memcpy(oldSideSwimStabSpr, sideswimstabspr, 4*3*sizeof(int32_t));
8586 memcpy(oldSideSwimPoundSpr, sideswimpoundspr, 4*3*sizeof(int32_t));
8587 memcpy(oldSideSwimChargeSpr, sideswimchargespr, 4*3*sizeof(int32_t));
8588 memcpy(oldSideSwimHoldSpr, sideswimholdspr, 3*3*sizeof(int32_t));
8589 memcpy(oldLiftingSpr, liftingspr, 4*4*sizeof(int32_t));
8590 memcpy(oldLiftingWalkSpr, liftingwalkspr, 4*3*sizeof(int32_t));
8591
8592 //Populate Player defenses
8593 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8594 {
8595 herotile_dlg[144 + i].d1 = hero_defence[wEnemyWeapons+i];
8596 }
8597 herotile_dlg[154+8].d1 = hero_defence[wFire];
8598 herotile_dlg[155+8].d1 = hero_defence[wBomb];
8599 herotile_dlg[156+8].d1 = hero_defence[wRefMagic];
8600 herotile_dlg[157+8].d1 = hero_defence[wRefFireball];
8601 herotile_dlg[158+8].d1 = hero_defence[wRefRock];
8602 herotile_dlg[159+8].d1 = hero_defence[wRefBeam];
8603
8604 herotile_dlg[171+8].d1 = hero_defence[wScript1];
8605 herotile_dlg[172+8].d1 = hero_defence[wScript2];
8606 herotile_dlg[173+8].d1 = hero_defence[wScript3];
8607 herotile_dlg[174+8].d1 = hero_defence[wScript4];
8608 herotile_dlg[175+8].d1 = hero_defence[wScript5];
8609 herotile_dlg[176+8].d1 = hero_defence[wScript6];
8610 herotile_dlg[177+8].d1 = hero_defence[wScript7];
8611 herotile_dlg[178+8].d1 = hero_defence[wScript8];
8612 herotile_dlg[179+8].d1 = hero_defence[wScript9];
8613 herotile_dlg[180+8].d1 = hero_defence[wScript10];
8614
8615 int32_t ret = 0;
8616 do
8617 {
8618 ret = do_zqdialog(herotile_dlg, 3);
8619
8620 if (ret == 3)
8621 {
8622 saved = false;
8623 set_qr(qr_LTTPCOLLISION, (herotile_dlg[181+8].flags & D_SELECTED) ? 1 : 0);
8624 set_qr(qr_LTTPWALK, (herotile_dlg[184+8].flags & D_SELECTED) ? 1 : 0);
8625 zinit.hero_swim_speed = (herotile_dlg[186+8].d1 == 0) ? 50 : 67;
8626
8627 //Save Player defenses
8628 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8629 {
8630 hero_defence[wEnemyWeapons + i] = herotile_dlg[137 + 7 + i].d1;
8631 }
8632 hero_defence[wFire] = herotile_dlg[154+8].d1;
8633 hero_defence[wBomb] = herotile_dlg[155+8].d1;
8634 hero_defence[wRefMagic] = herotile_dlg[156+8].d1;
8635 hero_defence[wRefFireball] = herotile_dlg[157+8].d1;
8636 hero_defence[wRefRock] = herotile_dlg[158+8].d1;
8637 hero_defence[wRefBeam] = herotile_dlg[159+8].d1;
8638
8639 hero_defence[wScript1] = herotile_dlg[171+8].d1;
8640 hero_defence[wScript2] = herotile_dlg[172+8].d1;
8641 hero_defence[wScript3] = herotile_dlg[173+8].d1;
8642 hero_defence[wScript4] = herotile_dlg[174+8].d1;
8643 hero_defence[wScript5] = herotile_dlg[175+8].d1;
8644 hero_defence[wScript6] = herotile_dlg[176+8].d1;
8645 hero_defence[wScript7] = herotile_dlg[177+8].d1;
8646 hero_defence[wScript8] = herotile_dlg[178+8].d1;
8647 hero_defence[wScript9] = herotile_dlg[179+8].d1;
8648 hero_defence[wScript10] = herotile_dlg[180+8].d1;
8649 hammeroffsets[0] = atoi(hmr1);
8650 hammeroffsets[1] = atoi(hmr2);
8651 hammeroffsets[2] = atoi(hmr3);
8652 hammeroffsets[3] = atoi(hmr4);
8653 liftingspr[0][spr_frames] = vbound(atoi(liftframes1),1,255);
8654 liftingspr[1][spr_frames] = vbound(atoi(liftframes2),1,255);
8655 liftingspr[2][spr_frames] = vbound(atoi(liftframes3),1,255);
8656 liftingspr[3][spr_frames] = vbound(atoi(liftframes4),1,255);
8657 }
8658 else if (ret == 168)
8659 {
8660 for (int32_t i = 146; i < 168; i++)
8661 {
8662 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8663 }
8664 for (int32_t i = 179; i < 189; i++)
8665 {
8666 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8667 }
8668 }
8669 else
8670 {
8671 memcpy(walkspr, oldWalkSpr, 4 * 3 * sizeof(int32_t));
8672 memcpy(stabspr, oldStabSpr, 4 * 3 * sizeof(int32_t));
8673 memcpy(slashspr, oldSlashSpr, 4 * 3 * sizeof(int32_t));
8674 memcpy(revslashspr, oldRevSlashSpr, 4 * 3 * sizeof(int32_t));
8675 memcpy(floatspr, oldFloatSpr, 4 * 3 * sizeof(int32_t));
8676 memcpy(swimspr, oldSwimSpr, 4 * 3 * sizeof(int32_t));
8677 memcpy(divespr, oldDiveSpr, 4 * 3 * sizeof(int32_t));
8678 memcpy(poundspr, oldPoundSpr, 4 * 3 * sizeof(int32_t));
8679 memcpy(jumpspr, oldJumpSpr, 4 * 3 * sizeof(int32_t));
8680 memcpy(chargespr, oldChargeSpr, 4 * 3 * sizeof(int32_t));
8681 memcpy(castingspr, oldCastSpr, 3 * sizeof(int32_t));
8682 memcpy(sideswimcastingspr, oldsideswimCastSpr, 3 * sizeof(int32_t));
8683 memcpy(holdspr, oldHoldSpr, 2*3*3*sizeof(int32_t));
8684 memcpy(drowningspr, oldDrownSpr, 4 * 3 * sizeof(int32_t));
8685 memcpy(sidedrowningspr, oldSideDrownSpr, 4 * 3 * sizeof(int32_t));
8686 memcpy(fallingspr, oldFallSpr, 4 * 3 * sizeof(int32_t));
8687 memcpy(drowning_lavaspr, oldLavaDrownSpr, 4 * 3 * sizeof(int32_t));
8688 memcpy(sideswimspr, oldSideSwimSpr, 4 * 3 * sizeof(int32_t));
8689 memcpy(sideswimslashspr, oldSideSwimSlashSpr, 4 * 3 * sizeof(int32_t));
8690 memcpy(sideswimstabspr, oldSideSwimStabSpr, 4 * 3 * sizeof(int32_t));
8691 memcpy(sideswimpoundspr, oldSideSwimPoundSpr, 4 * 3 * sizeof(int32_t));
8692 memcpy(sideswimchargespr, oldSideSwimChargeSpr, 4 * 3 * sizeof(int32_t));
8693 memcpy(sideswimholdspr, oldSideSwimHoldSpr, 3* 3 * sizeof(int32_t));
8694 memcpy(liftingspr, oldLiftingSpr, 4 * 4 * sizeof(int32_t));
8695 memcpy(liftingwalkspr, oldLiftingWalkSpr, 4 * 3 * sizeof(int32_t));
8696 }
8697 } while (ret == 168);
8698
8699 return D_O_K;
8700 }
8701
8702 6 void center_zq_custom_dialogs()
8703 {
8704 6 jwin_center_dialog(herotile_dlg);
8705 6 jwin_center_dialog(wpndata_dlg);
8706 6 jwin_center_dialog(enedata_dlg);
8707 6 }
8708